Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在非根视图组中使用include标记时,Android数据绑定会导致应用程序崩溃_Android_Data Binding - Fatal编程技术网

在非根视图组中使用include标记时,Android数据绑定会导致应用程序崩溃

在非根视图组中使用include标记时,Android数据绑定会导致应用程序崩溃,android,data-binding,Android,Data Binding,当我使用Android数据绑定在xml文件的非根元素中使用include标记时,应用程序崩溃。但是当include标记放在根元素中或没有数据绑定时,应用程序运行良好 这是我的源代码,有人能帮我找出原因吗 activity_main.xml 堆栈跟踪 I/ActivityManager(13254):从显示0上的UID10008启动u0{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]flg=0x100000

当我使用Android数据绑定在xml文件的非根元素中使用
include
标记时,应用程序崩溃。但是当
include
标记放在根元素中或没有数据绑定时,应用程序运行良好

这是我的源代码,有人能帮我找出原因吗

activity_main.xml

堆栈跟踪

I/ActivityManager(13254):从显示0上的UID10008启动u0{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]flg=0x10000000 cmp=com.liangfeizc.databindings/.MainActivity(具有附加功能)}
I/ActivityManager(13254):为activity com.liangfeizc.databindings/.main活动启动proc com.liangfeizc.databindings.pid=18181 uid=10065 gids={500659997}abi=x86
I/art(18181):未延迟启用-Xcheck:jni(已启用)
D/AndroidRuntime(18181):关闭虚拟机
E/AndroidRuntime(18181):致命异常:主
E/AndroidRuntime(18181):进程:com.liangfeizc.databindings,PID:18181
E/AndroidRuntime(18181):java.lang.RuntimeException:无法启动activity ComponentInfo{com.liangfeizc.databindings/com.liangfeizc.databindings.MainActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.widget.LinearLayout.setTag(java.lang.Object)'
E/AndroidRuntime(18181):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
E/AndroidRuntime(18181):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
E/AndroidRuntime(18181):位于android.app.ActivityThread.access$800(ActivityThread.java:144)
E/AndroidRuntime(18181):位于android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
E/AndroidRuntime(18181):位于android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(18181):位于android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime(18181):位于android.app.ActivityThread.main(ActivityThread.java:5221)
E/AndroidRuntime(18181):位于java.lang.reflect.Method.invoke(本机方法)
E/AndroidRuntime(18181):位于java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(18181):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
E/AndroidRuntime(18181):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
E/AndroidRuntime(18181):由以下原因引起:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.LinearLayout.setTag(java.lang.Object)”
E/AndroidRuntime(18181):位于com.liangfeizc.databindings.databinding.ActivityMainBinding。(ActivityMainBinding.java:27)
E/AndroidRuntime(18181):位于com.liangfeizc.databindings.databinding.ActivityMainBinding.bind(ActivityMainBinding.java:88)
E/AndroidRuntime(18181):位于android.databinding.DataBinderMapper.getDataBinder(DataBinderMapper.java:14)
E/AndroidRuntime(18181):在android.databinding.DataBindingUtil.bind(DataBindingUtil.java:107)
E/AndroidRuntime(18181):在android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:68)
E/AndroidRuntime(18181):在android.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:185)
E/AndroidRuntime(18181):位于com.liangfeizc.databindings.MainActivity.onCreate(MainActivity.java:18)
E/AndroidRuntime(18181):位于android.app.Activity.performCreate(Activity.java:5937)
E/AndroidRuntime(18181):位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
E/AndroidRuntime(18181):位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
E/AndroidRuntime(18181):。。。10多
W/ActivityManager(13254):强制完成活动com.liangfeizc.databindings/.MainActivity
D/(13254):主机连接::get()新主机连接已建立0xa0a234d0,tid 13352
此处报告:


已在内部修复,应该很快发布。

在出现错误之前,我对include标记有问题,而不是您的代码。我建议改为使用片段,因为它们是可靠的,也是更好的编程方式。创建包含在片段中的文件,然后像这样在布局文件中调用片段

<fragment android:name="your fragment here"
          android:id="@+id/article_fragment"
          android:layout_weight="2"
          android:layout_width="0dp"
          android:layout_height="match_parent" />


我建议点击谷歌搜索片段,它将填充其余部分。

添加带有绑定的xml,
layout
标签添加在那里。请粘贴一些与此错误相关的回溯跟踪。您的
include\u layout
是什么意思?您的意思是用
Fragment
替换
include
?是的,将您要包含的文件创建为片段,然后在布局文件中调用Fragment,如this@James这不是真的这是一个很好的方法。Include专门用于跨多个其他布局重复使用的布局。碎片不会以同样的方式重复使用。除非我弄错了,否则在编译时,
语句将替换为实际的布局文件。片段不是,因此它们在运行时会占用内存中的额外空间。
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        binding.textView.setText("hello world");
    }
}
I/ActivityManager(13254): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.liangfeizc.databindings/.MainActivity (has extras)} from uid 10008 on display 0
I/ActivityManager(13254): Start proc com.liangfeizc.databindings for activity com.liangfeizc.databindings/.MainActivity: pid=18181 uid=10065 gids={50065, 9997} abi=x86
I/art     (18181): Not late-enabling -Xcheck:jni (already on)
D/AndroidRuntime(18181): Shutting down VM
E/AndroidRuntime(18181): FATAL EXCEPTION: main
E/AndroidRuntime(18181): Process: com.liangfeizc.databindings, PID: 18181
E/AndroidRuntime(18181): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.liangfeizc.databindings/com.liangfeizc.databindings.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.LinearLayout.setTag(java.lang.Object)' on a null object reference
E/AndroidRuntime(18181):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
E/AndroidRuntime(18181):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
E/AndroidRuntime(18181):  at android.app.ActivityThread.access$800(ActivityThread.java:144)
E/AndroidRuntime(18181):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
E/AndroidRuntime(18181):  at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(18181):  at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime(18181):  at android.app.ActivityThread.main(ActivityThread.java:5221)
E/AndroidRuntime(18181):  at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(18181):  at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime(18181):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
E/AndroidRuntime(18181):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
E/AndroidRuntime(18181): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.LinearLayout.setTag(java.lang.Object)' on a null object reference
E/AndroidRuntime(18181):  at com.liangfeizc.databindings.databinding.ActivityMainBinding.<init>(ActivityMainBinding.java:27)
E/AndroidRuntime(18181):  at com.liangfeizc.databindings.databinding.ActivityMainBinding.bind(ActivityMainBinding.java:88)
E/AndroidRuntime(18181):  at android.databinding.DataBinderMapper.getDataBinder(DataBinderMapper.java:14)
E/AndroidRuntime(18181):  at android.databinding.DataBindingUtil.bind(DataBindingUtil.java:107)
E/AndroidRuntime(18181):  at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:68)
E/AndroidRuntime(18181):  at android.databinding.DataBindingUtil.setContentView(DataBindingUtil.java:185)
E/AndroidRuntime(18181):  at com.liangfeizc.databindings.MainActivity.onCreate(MainActivity.java:18)
E/AndroidRuntime(18181):  at android.app.Activity.performCreate(Activity.java:5937)
E/AndroidRuntime(18181):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
E/AndroidRuntime(18181):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
E/AndroidRuntime(18181):  ... 10 more
W/ActivityManager(13254):   Force finishing activity com.liangfeizc.databindings/.MainActivity
D/        (13254): HostConnection::get() New Host Connection established 0xa0a234d0, tid 13352
<fragment android:name="your fragment here"
          android:id="@+id/article_fragment"
          android:layout_weight="2"
          android:layout_width="0dp"
          android:layout_height="match_parent" />