簡體   English   中英

在非根ViewGroup中使用include標記時,Android數據綁定會導致應用程序崩潰

[英]Android Data Binding makes app crash when using include tag in a non-root ViewGroup

當我使用Android數據綁定在我的xml文件中的非根元素中使用include標記時,應用程序崩潰了。 但是當include標記放在根元素中或沒有數據綁定的東西時,應用程序運行良好。

這是我的源代碼,任何人都可以幫我弄清楚原因嗎?

activity_main.xml中

<layout>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">


        <TextView
            android:id="@+id/text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />

        <LinearLayout

            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <include layout="@layout/include_layout" />

        </LinearLayout>
    </LinearLayout>
</layout>

MainActivity.java

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

報告在此處: https//code.google.com/p/android/issues/detail?id = 176649

內部固定,應盡快發布。

我遇到了包含標簽的問題,之前有一個錯誤,而不是你的代碼。 我建議使用片段而不是它們是可靠的並且是更好的編程方式。 創建包含在片段中的文件,然后像這樣在布局文件中調用片段

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

我建議點擊谷歌片段,它將填補其余部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM