我想在我的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()中断,请告诉我原因。非常感谢你。
答案 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);
}
现在您可以使用显示矩阵来获取宽度,高度等