例外情况如下:
java.lang.NullPointerException: Attempt to read from field 'java.lang.Runnable android.databinding.ViewDataBinding.mRebindRunnable' on a null object reference
at android.databinding.ViewDataBinding.access$100(ViewDataBinding.java:51)
at android.databinding.ViewDataBinding$5.onViewAttachedToWindow(ViewDataBinding.java:142)
at android.view.View.dispatchAttachedToWindow(View.java:14525)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2836)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2843)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1364)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
让我尽力使描述简洁明了。
首先,这与动态添加的布局有关。活动的数据绑定完美无误地运行。 这是布局foo_view:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="foo"
type="net.mydomain.myapp.MyActivity.Foo" />
<import type="android.view.View" />
</data>
<!--For the sake of debugging, no data binding is actually used-->
...
</layout>
在MyActivity.java中:
public class MyActivity extends AppCompatActivity {
public class Foo{
...
}
...
addFoo(){
FooViewBinding binding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.foo_view, myGridLayout, true);
Foo foo = new Foo();
binding.setFoo(foo);
}
}
应用程序在MyActivity启动后立即兑现。崩溃不是由特定的代码行引起的。
有人可以对此有所了解吗?
[编辑] 2016-06-30
崩溃发生在棒棒糖上,但相同的代码在果冻豆上运行良好
答案 0 :(得分:3)
如果有人遇到同样的问题,当您更改启用数据绑定的视图的标记(即view.setTag(object)
)时会发生此错误,因为数据绑定库会为自身使用标记。
答案 1 :(得分:0)
就我而言,
如果我在“合并”中使用
<merge tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<androidx.constraintlayout.widget.Group
android:id="@+id/constraint_group_active"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="@{data != null}"
app:constraint_referenced_ids="txt_offering_slogan,view_extra_gift,iv_offering,txt_offering_title,txt_offering_subtitle,txt_buy_extra_gift"
tools:visibility="visible" />
</merge>