出于某种原因,我必须在非活动扩展类中获取屏幕尺寸。我尝试使用以下方法:
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
int w = metrics.widthPixels;
所以我可以使用“w”作为像素的宽度尺寸。但是,似乎这种方法仅适用于扩展活动的类。任何解决方案?
谢谢大家。
答案 0 :(得分:1)
您必须通过类的构造函数传递上下文:
public class Something {
Context context;
public Something(Context context){
this.context = context;
}
public int getDisplayWidth(){
DisplayMetrics metrics = this.context.getResources().getDisplayMetrics();
int w = metrics.widthPixels;
return w;
}
}
答案 1 :(得分:0)
为了访问Activity
方法而无需在每次需要时传递context
,在应用程序对象中保留对 currentActivity 的引用非常有用.-
public class YourApplication extends Application {
public YourApplication() {
instance = this;
}
public static YourApplication getInstance() {
return instance;
}
public Activity getCurrentActivity() {
return currentActivity;
}
public void setCurrentActivity(Activity currentActivity) {
this.currentActivity = currentActivity;
}
}
在AndroidManifest.xml
<application
android:name=".YourApplication"
...
>
</application>
并使用Activities
onResume
方法.-
@Override
protected void onResume() {
super.onResume();
YourApplication.getInstance().setCurrentActivity(this);
}
此外,我通常会在其余的活动中扩展ParentActivity
,将一些常见逻辑分组。