'android'调整片段内视图的大小

aydmsdu9  于 2023-05-12  发布在  Android
关注(0)|答案(1)|浏览(253)

我正在努力通过编程方式调整片段中的视图大小,这个片段也在FragmentStatePagerAdapter中,可以与另外两个视图循环。
我像往常一样声明并示例化了视图
然后我有这个方法来在每个视图上应用调整大小:

private void dimensioniEmargini(View view, int width, int height, int marginLeft, int marginTop, int marginBotton, int marginRight) {

        RelativeLayout.LayoutParams parametri;
        parametri = (RelativeLayout.LayoutParams) view.getLayoutParams();
        parametri.height = height;
        parametri.width = width;
        parametri.leftMargin = marginLeft;
        parametri.topMargin = marginTop;
        parametri.bottomMargin = marginBotton;
        parametri.rightMargin = marginRight;
        view.setLayoutParams(parametri);

    }

我的问题是:如果我从onCreateView调用它,它可以完美地工作,但是,如果我从另一个方法(在同一个类中)调用,就像下面的那个(我给予值只是为了尝试一下)

public void aggiornaDimensioni(String _query) {

        dimensioniEmargini(barraCorretto, 45, 100, 0, 0, 0, 0);

    }

我得到一个null指针异常:
java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“android.view.ViewGroup$LayoutParams android.view.View.getLayoutParams()”
我需要从一个方法调整大小,因为它是从父活动调用的,并且意味着根据数据库查询来更改大小。
我该怎么解决?

1tuwyuhd

1tuwyuhd1#

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewGroup$LayoutParams android.view.View.getLayoutParams()' on a null object reference

这意味着您正在对空View对象调用getLayoutParams()。所以这里:

parametri = (RelativeLayout.LayoutParams) view.getLayoutParams();

view为空。所以在onCreateView期间传入的任何内容都可以,但是当从另一个函数调用barraCorretto时,它都是null。
请记住,Fragment必须经过布局(通过onCreateView),然后才能执行getView(),并且Fragment s可以被销毁和重新创建。

相关问题