尝试获取屏幕大小时获取NullPointerException

时间:2011-11-05 01:28:27

标签: android nullpointerexception

这是我的代码,我收到了NullPointerException:

@Override
protected void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.realplay);
    super.onCreate(savedInstanceState);
    //setContentView(new RealPlayView(this));

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    String str_ScreenSize = "The Android Screen is: "
                + dm.widthPixels
                + " x "
                + dm.heightPixels;

    TextView mScreenSize = (TextView) findViewById(R.id.textview);
    mScreenSize.setText(str_ScreenSize);
}

logcat说:

11-04 18:26:24.404: E/AndroidRuntime(15324): Caused by: java.lang.NullPointerException
11-04 18:26:24.404: E/AndroidRuntime(15324):    at com.synamegames.stackem.RealPlayActivity.onCreate(RealPlayActivity.java:27)
11-04 18:26:24.404: E/AndroidRuntime(15324):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-04 18:26:24.404: E/AndroidRuntime(15324):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
11-04 18:26:24.404: E/AndroidRuntime(15324):    ... 11 more

我已经尝试了很多其他方法来获得屏幕宽度和高度,但它们都不起作用。有什么提示吗?

3 个答案:

答案 0 :(得分:2)

我认为问题是在setContentView()之前调用super.onCreate(),这可能是第27行。

答案 1 :(得分:0)

下面的代码运行正常所以问题在其他地方,尝试放置Log语句或在调试模式下运行它以找到空指针的位置。

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    String str_ScreenSize = "The Android Screen is: "
                + dm.widthPixels
                + " x "
                + dm.heightPixels;
    Log.i("",str_ScreenSize);

答案 2 :(得分:0)

您也可以尝试以下代码:

 Display d=((WindowManager)this.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
 width=d.getWidth();
 height=d.getHeight();