2013-08-14 1 views
6

Я хочу использовать getWindowManager() в моей MainActivity, но я не хочу писать этот метод непосредственно в нем.Как использовать getWindowManager() другим java-файлом

Вот мой 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); 
} 

и вот мой код 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; 
} 
} 

мой код перерыв в getWindowManager(), скажите, пожалуйста, почему. Большое спасибо.

+0

Вы должны опубликовать вывод LogCat , – Vikram

+1

Что именно вы хотите? Вы хотите, чтобы ваша деятельность была в полноэкранном режиме? –

ответ

3

Почему вы не создать статический метод:

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

Ваш DisplayMessageActivity не создается successuffly. Вы не можете просто создать новый объект активности, чтобы использовать все его методы.

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

Целесообразно принять в качестве первого аргумента действие, а не Контекст, который вызывается в действие. – sapht

0

Ответ ваш первый вопрос: «Я хочу использовать getWindowManager() в моем MainActivity, но я не хочу, чтобы написать этот метод непосредственно в нем.» Вы можете написать BaseActivity extends Activity & здесь вы можете определить код для

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

И DisplayMessageActivity & MainActivity вы можете простирается с BaseActivity.

0

Последующие два этапа:

Первое:

расширяющие класс Activity

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

Второе:

Используйте код ниже:

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

 Смежные вопросы

  • Нет связанных вопросов^_^