android - '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, 0, 0, 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
当您从该其他函数调用它时为空。
请记住,aFragment
必须经过布局(通过onCreateView
)才能执行getView()
,并且Fragment
s 可以被销毁和重新创建。
推荐阅读
- ios - iOS UITextInput 控件:从硬件键盘接收前向删除键
- go - Panic runtime error while running Hello Couchbase application
- jquery - 在jQuery中只获取每个td的第一个孩子
- angular - 加载网络摄像头组件后未定义 Appcomponent 变量
- html - 如何将新表合并到现有表中而不放入相同的形式?
- python - 性能调整:使用集合或数据框比较两个表:获取最终消息为“Killed”
- javascript - 带有键的对象:值,其中每个值都是对象数组 - 不能迭代
- c++ - 关于 DefineClass 和我尝试使用它的问题
- mongodb - 过滤来自多个集合的输出
- javascript - 从鼠标事件函数内部获取变量的值