java - NullPointerException 使用 getWindowManager()

标签 java android

为什么 SAMPLE1 代码工作正常而 SAMPLE2 抛出 NullPointerExceptiongetWindowManager() 只在 onCreate 内工作吗?我可以做些什么来创建一个方法来返回 View 的高度并使其可用于所有子类?请帮助..

样本 1

public class MainActivity extends ActionBarActivity
        {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        final int height = displaymetrics.heightPixels;        
        float imheight= (float) (height*.4);
        int h=Math.round(imheight);

        ImageView im=(ImageView)findViewById(R.id.mainnews1);
        im.getLayoutParams().height = h;
        im.setScaleType(ImageView.ScaleType.FIT_XY);

        }

样本 2

public class MainActivity extends ActionBarActivity
        {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

             ImageView im=(ImageView)findViewById(R.id.mainnews1);
        im.getLayoutParams().height = new MainActivity().heightof();
        im.setScaleType(ImageView.ScaleType.FIT_XY);
    }

    public int heightof()
    {
        DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        final int height = displaymetrics.heightPixels;
        int width = displaymetrics.widthPixels;
        float imheight= (float) (height*.4);
        int h=Math.round(imheight);
        return h;
    }
        }

最佳答案

您不应该调用 new MainActivity(),而是尝试传递或使用 MainActivity.this 之类的上下文

关于java - NullPointerException 使用 getWindowManager(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30421052/

相关文章:

android - 未知的 URL 方案

android - 应用程序未启动 - React Native (Android)

java - 为什么我的listView不可见?

Java程序无法连接到我的gmail帐户

java - getGraphics() 阻止我的游戏启动

Java - 如何将列表位置拉为整数?

java - 使用 Enum 来检查条件

android - SwipeRefreshLayout - 向下滑动刷新但不移动 View 下拉

android - 如何将 python 程序集成到 kivy 应用程序中

java - 如何从文件中读取 'integer'类型的数据?