2013-08-14 12 views
6

Ich möchte getWindowManager() in meiner MainActivity verwenden, aber ich möchte diese Methode nicht direkt darin schreiben.Wie benutze ich getWindowManager() von einer anderen Java-Datei

Hier ist mein MainActivity Code

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); 
} 

und hier ist mein DisplayMessageActivity Code

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; 
} 
} 

meinen Code Pause bei getWindowManager(), erklären Sie mir bitte, warum. Vielen Dank.

+0

Sie sollten die Logcat Ausgabe veröffentlichen . – Vikram

+1

Was genau willst du ??? Willst du deine Aktivität mit Vollbild? –

Antwort

3

Warum Sie statische Methode nicht erstellen:

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; 
} 

Ihre DisplayMessageActivity nicht successuffly erstellt. Sie können nicht einfach ein neues Aktivitätsobjekt erstellen, um alle seine Methoden zu verwenden.

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

Es ist ratsam, Aktivität als erstes Argument anstelle eines Kontexts zu verwenden, der an eine Aktivität gebunden ist. – sapht

0

Antwort Ihrer ersten Frage: "Ich will getWindowManager() in meinem MainActivity verwenden, aber ich will nicht, diese Methode direkt in sie schreiben." Sie können BaseActivity extends Activity & hier schreiben Sie

definieren können Sie den Code für
public String getWeithAndHeight(Context context, String url) { 
    DisplayMetrics dm = new DisplayMetrics(); 
    ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm); 
    //.... 
} 

Und für DisplayMessageActivity & MainActivity Sie mit BaseActivity erstreckt können.

0

Folgen in zwei Schritten:

Erstens:

Verwenden Sie den folgenden Code:

Aktivitätsklasse

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

Zweite verlängern

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