我正在努力通过编程方式调整片段中的视图大小,这个片段也在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()”
我需要从一个方法调整大小,因为它是从父活动调用的,并且意味着根据数据库查询来更改大小。
我该怎么解决?
1条答案
按热度按时间1tuwyuhd1#
这意味着您正在对空
View
对象调用getLayoutParams()
。所以这里:view
为空。所以在onCreateView
期间传入的任何内容都可以,但是当从另一个函数调用barraCorretto
时,它都是null。请记住,
Fragment
必须经过布局(通过onCreateView
),然后才能执行getView()
,并且Fragment
s可以被销毁和重新创建。