java.lang.NullPointerException: Layout parameters cannot be null at android.view.View.setLayoutParams(View.java:11504)

今天在写一个 popwindow,给它重新设置高度的时候,竟然报错:

java.lang.NullPointerException: Layout parameters cannot be null at android.view.View.setLayoutParams(View.java:11504)

关键是,在 android 7.0 系统上运行正常,一到 5.5 上运行就崩溃,于是定位代码,首先看是不是view加载失败了,定位代码行

mLayoutView = LayoutInflater.from(context).inflate(mLayoutId, null);

打印出的 mLayoutView 是有值的。

接着看它的调用的地方:

   private void setViewSize(final View view){
        view.post(new Runnable(){
            public void run() {//这里获取宽高
                int maxHeight=ScreenUtil.getHeight(mContext)/4;
                int height=view.getHeight();
                ViewGroup.LayoutParams params= view.getLayoutParams();
                if(height>maxHeight){
                    params.height=maxHeight;
                }
                view.setLayoutParams(params);
            }
        });
    }

运行后,显示 view.setLayoutParams(params); 这行报错,报的错就是
Layout parameters cannot be null at android.view.View.setLayoutParams(View.java:11504)

很纳闷啊,于是就把 setViewSize()方法中的

 ViewGroup.LayoutParams params= view.getLayoutParams();

改成

ViewGroup.LayoutParams params= new ViewGroup.LayoutParams(ScreenUtil.getWidth(mContext)/3, ViewGroup.LayoutParams.WRAP_CONTENT);

即 setViewSize()方法成下边这样的:

  private void setViewSize(final View view){
        view.post(new Runnable(){
            public void run() {//这里获取宽高
                int maxHeight=ScreenUtil.getHeight(mContext)/4;
                int height=view.getHeight();
                ViewGroup.LayoutParams params= new ViewGroup.LayoutParams(ScreenUtil.getWidth(mContext)/3, ViewGroup.LayoutParams.WRAP_CONTENT);
                if(height>maxHeight){
                    params.height=maxHeight;
                }
                view.setLayoutParams(params);
            }
        });
    }

然后,在 7.0 手机上运行,完美!接着在5.0手机上运行,完美!你知道我当时的心情么,简直就是一万只草泥马被太阳晒死的场面,我勒个去啊。

唉,好了,不管怎样,问题算是解决了,希望遇到相同问题的哥们别踩一样的坑,谢谢诶。

你可能感兴趣的:(java.lang.NullPointerException: Layout parameters cannot be null at android.view.View.setLayoutParams(View.java:11504))