我如何使用另一个java文件的getWindowManager()

时间:2013-08-14 07:08:57

标签: android window-managers

我想在我的MainActivity中使用getWindowManager(),但我不想直接在其中编写此方法。

这是我的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()中断,请告诉我原因。非常感谢你。

6 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:5)

为什么不创建静态方法:

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 未成功创建。您不能只创建新的活动对象来使用其所有方法。

答案 2 :(得分:4)

如果您使用的是Kotlin,此代码可能对您有所帮助:

<router-view :key="$route.fullPath"></router-view>

答案 3 :(得分:0)

回答你的第一个问题“我想在我的MainActivity中使用getWindowManager(),但我不想直接在其中编写这个方法。”你可以写BaseActivity extends Activity&amp;在这里你可以定义

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

对于DisplayMessageActivity&amp;您可以使用BaseActivity扩展MainActivity。

答案 4 :(得分: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;

答案 5 :(得分:0)

在这里参加聚会太晚了,将答案发布出来,因为有人可能会从中受益。 您可以使用此类上下文将WindowManager()作为静态引用

  DisplayMetrics displayMetrics = new DisplayMetrics();
        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        if (windowManager != null) {
            windowManager.getDefaultDisplay().getMetrics(displayMetrics);
        }

现在您可以使用显示矩阵来获取宽度,高度等