Android 在Fragment中使用DataBinding 如何不在onCreateView 中setData
本文介绍了Android 在Fragment中使用DataBinding 如何不在onCreateView 中setData的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
在xml文件中用到了Float.valueOf()方法
如果不在Fragment中的onCreateView中设置有值的Data,则会报错误
onCreateView中设置非空的Data或者XML中删除Float.ValueOf()则正常
问题是数据是通过网络请求得到的,不能在onCreateView中获取数据。
所以想知道有没有更好的解决办法。
XML文件
<TextView
android:id="@+id/limitPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="@{operation.limitPrice}"
android:textColor='@{Float.valueOf(operation.limitPrice)>Float.valueOf(operation.newPrice)?@color/red : @color/green}'
android:textSize="18sp" />
Fragment文件(取消注释后正常)
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
dataBind = DataBindingUtil.inflate(inflater, R.layout.fragment_operation_details, container, false);
/*OperationBean bean = new OperationBean();
bean.setLimitPrice("12");
bean.setNewPrice("21");
dataBind.setOperation(bean);*/
return dataBind.getRoot();
}
解决方案
一般是设置一个空数据吧。
如果要实现这个功能,可以在 onCreateView()
方法中正常地 inflate 这个布局,保存 view 为全局变量。
获取到数据以后,再进行绑定。
这篇关于Android 在Fragment中使用DataBinding 如何不在onCreateView 中setData的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文