DataBinding自定义View空指针问题

2022-09-09  本文已影响0人  TMAC_EAH
xxx.setTag(java.lang.Object)' on a null object reference
09-09 09:20:28.820  5124  5124 E AndroidRuntime:    at com.sinochem.argcx.sample.databinding.TstBindingImpl.<init>(TstBindingImpl.java:33)

attrs.xml
<declare-styleable name="Plant_Input">
        <attr name="test" format="string|reference" />
</declare-styleable>  

@BindingMethods({
        @BindingMethod(
                type = TFun.class,
                attribute = "tst",
                method = "setLeft1Text")
})
public class TFun extends LinearLayout {
    public String left1Text;
    public void setLeft1Text(String left1Text) {
        this.left1Text = left1Text;
        if (mTest != null) {
            mTest.setText(left1Text);
        }
    }
    public void tryParse(Context context, AttributeSet attrs) {
        if (attrs == null) {
            return;
        }
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Plant_Input);
        String left1Text = a.getString(R.styleable.Plant_Input_test);
        if (mTest1 != null) {
            mTest1.setText(left1Text);
        }
        a.recycle();
    }

   
    //==============问题原因==============
    public String tag;
    @Override
    public String getTag() {
        return TextUtils.isEmpty(tag) ? "" : tag;
    }
    //================================
    public TFun(Context context) {
        super(context);
        init();
    }
    ....
}


 <com.sinochem.argcx.sample.TFun
      android:id="@+id/TFun"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      app:test="你好啊啊"
      app:tst="@{data.name}" />

解决方案

1.setTag方法去掉,换个方法用
上一篇下一篇

猜你喜欢

热点阅读