Android 中 DisplayMetrics 声明错误中的 getWindowManager 错误

Error from getWindowManager in DisplayMetrics declaration error in Android

我正在设计我的第一个 android 应用程序,其中一部分需要获取屏幕尺寸。我以标准方式使用 DisplayMetrics 对象:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics); //the error is on all 3 methods here
int height = metrics.heightPixels;
int width = metrics.widthPixels;

但是我在第 2 行收到了 3 种方法中每一种方法的无效方法声明错误。此代码在我的 mainactivity.java 文件中,创建为空 activity。 None 其他问题中建议的更改在这里有所帮助。我已经尝试了 (Activity) cast 和 getContext() 方法。

这是整个文件:

package com.example.android.cloudmusic;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;

    }
}

非常感谢任何指点。

您应该只在 onCreate 方法内部而不是外部使用此代码。去掉不必要的牙套,一切都好。

package com.example.android.cloudmusic;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      DisplayMetrics metrics = new DisplayMetrics();
      getWindowManager().getDefaultDisplay().getMetrics(metrics);
      int height = metrics.heightPixels;
      int width = metrics.widthPixels;
      // use these height and width here onwards.. 
  }
}