2013-08-14 9 views
6

Chcę użyć getWindowManager() w moim MainActivity, ale nie chcę bezpośrednio pisać w nim tej metody.Jak używać getWindowManager() przez inny plik java?

Oto mój kod główną działalność

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

i tu jest mój kod 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; 
} 
} 

moja przerwa kod na getWindowManager(), proszę mi powiedzieć, dlaczego. Dziękuję Ci bardzo.

+0

Należy zakładać wyjście logcat . – Vikram

+1

Czego dokładnie chcesz? Czy chcesz robić swoją aktywność na pełnym ekranie? –

Odpowiedz

3

Dlaczego nie można utworzyć metody statyczne:

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

Twój DisplayMessageActivity nie jest tworzony successuffly. Nie można po prostu utworzyć nowego obiektu aktywności, aby użyć wszystkich jego metod.

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

Zaleca się, aby aktywność była pierwszym argumentem zamiast kontekstem rzutowanym na działanie. – sapht

0

odpowiedzi na swoje pierwsze pytanie „Chcę użyć getWindowManager() w moim główną działalność, ale nie chcę, aby napisać ten sposób bezpośrednio w nim.” Można pisać BaseActivity extends Activity & tutaj można zdefiniować kod

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

I DisplayMessageActivity & główną działalność można rozciąga się z BaseActivity.

0

Obserwuj dwa etapy:

pierwsze:

rozciągają Klasa aktywności

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

drugie:

skorzystać z poniższego kodu:

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