问题描述
我正在努力以编程方式调整片段内的视图大小,这个片段也在一个 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
可以被销毁和重新创建。>