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

问题描述

我正在努力以编程方式调整片段内的视图大小,这个片段也在一个 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);

    }

我得到一个空指针异常:

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.view.ViewGroup$LayoutParams android.view.View.getLayoutParams()”

我需要从一个方法调整大小,因为它是从父活动调用的,旨在根据数据库查询更改大小。

我该如何解决?

解决方法

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

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

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

view 为空。因此,无论您在 onCreateView 期间传入什么都可以,但是当您从其他函数调用它时 barraCorretto 为 null。

请记住,Fragment 必须经过布局(通过 onCreateView)才能执行 getView(),并且 Fragment 可以被销毁和重新创建。>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...