2013-08-14 7 views
6

Voglio usare getWindowManager() nel mio MainActivity, ma non voglio scrivere direttamente questo metodo.Come utilizzare getWindowManager() da un altro file java

Ecco il mio codice MainActivity

public class MainActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    String d= new DisplayMessageActivity().getWeithAndHeight(d); 
} 

e qui è il mio codice DisplayMessageActivity

public class DisplayMessageActivity extends Activity { 

@SuppressLint("NewApi") 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Intent intent = getIntent(); 
    .... 
    .... 
    setContentView(textView); 
} 
public String getWeithAndHeight(String url) { 
    DisplayMetrics dm = new DisplayMetrics(); 
    *getWindowManager().getDefaultDisplay().getMetrics(dm);* 
    int width = dm.widthPixels; 
    int height = dm.heightPixels; 
    String w=new String(""+width); 
    String h=new String(""+height); 
    url=url+"&23=w%3A"+w+"%20h%3A"+h+"%20d%3A"; 
    return url; 
} 
} 

mia pausa codice a getWindowManager(), la prego di dirmi perché. Grazie mille.

+0

Si consiglia di inviare l'output Logcat . – Vikram

+1

Che cosa vuoi esattamente ??? Vuoi la tua attività a schermo intero ?? –

risposta

3

Perché non si crea il metodo statico:

public static String getWeithAndHeight(Activity activity, String url) { 
    DisplayMetrics dm = new DisplayMetrics(); 
    activity.getWindowManager().getDefaultDisplay().getMetrics(dm); 
    int width = dm.widthPixels; 
    int height = dm.heightPixels; 
    String w=new String(""+width); 
    String h=new String(""+height); 
    url=url+"&23=w%3A"+w+"%20h%3A"+h+"%20d%3A"; 
    return url; 
} 

tuo DisplayMessageActivity non viene creato successuffly. Non puoi semplicemente creare un nuovo oggetto attività per utilizzare tutti i suoi metodi.

16
public String getWeithAndHeight(Context context, String url) { 
    DisplayMetrics dm = new DisplayMetrics(); 
    ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm); 
    //.... 
} 
+0

È consigliabile prendere Attività come primo argomento anziché come contesto assegnato a un'attività. – sapht

0

risposta della vostra prima domanda "Voglio usare getWindowManager() nel mio MainActivity, ma non voglio scrivere questo metodo direttamente in esso." È possibile scrivere BaseActivity extends Activity & Qui è possibile definire il codice per

public String getWeithAndHeight(Context context, String url) { 
    DisplayMetrics dm = new DisplayMetrics(); 
    ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm); 
    //.... 
} 

E per DisplayMessageActivity & MainActivity è possibile si estende con BaseActivity.

0

Segui due fasi:

Primo:

Ampliate la Classe di attività

**class Example extends Activity 
.....** 

Secondo:

Uso sottostante Codice:

**DisplayMetrics displayMetrics = new DisplayMetrics(); 
WindowManager windowmanager = (WindowManager)                  getApplicationContext().getSystemService(Context.WINDOW_SERVICE); 
windowmanager.getDefaultDisplay().getMetrics(displayMetrics); 
int deviceWidth = displayMetrics.widthPixels; 
int deviceHeight = displayMetrics.heightPixels;**