Android 在Fragment中使用DataBinding 如何不在onCreateView 中setData

查看:1325
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆