2017-02-12 32 views
0

我試圖在我的活動中顯示小吃店,但InflateException不斷打我。在我的項目的早期階段,我可以在稍後開始工作;我在我的活動中添加了片段,從那時起我就得到了InflateException。小吃店<merge>錯誤

代碼:

Snackbar.Make(DrawerLayout, "Message", Snackbar.LengthLong).Show(); 

DrawerLayout是我的活動的根視圖,如下圖所示:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/DrawerLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <android.support.design.widget.AppBarLayout 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:id="@+id/ToolbarLayout"> 
      <include 
       layout="@layout/Toolbar" 
       app:layout_scrollFlags="scroll|enterAlways" /> 
     </android.support.design.widget.AppBarLayout> 
     <FrameLayout 
      android:id="@+id/ContentFrame" 
      android:layout_below="@id/ToolbarLayout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 
    </RelativeLayout> 
    <FrameLayout 
     android:id="@+id/LeftDrawer" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" /> 
</android.support.v4.widget.DrawerLayout> 

注意我不知道它是否有關,但ContentFrameLeftDrawer是碎片佔位符

我得到的異常字符串:

Android.Views.InflateException: Binary XML file line #18: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true ---> Android.Views.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true 
    --- End of inner exception stack trace --- 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 
    at Java.Interop.JniEnvironment+StaticMethods.CallStaticObjectMethod (Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00082] in /Users/builder/data/lanes/3511/501e63ce/source/Java.Interop/src/Java.Interop/Java.Interop/JniEnvironment.g.cs:12649 
    at Android.Runtime.JNIEnv.CallStaticObjectMethod (System.IntPtr jclass, System.IntPtr jmethod, Android.Runtime.JValue* parms) [0x00000] in /Users/builder/data/lanes/3511/501e63ce/source/monodroid/src/Mono.Android/JNIEnv.g.cs:562 
    at Android.Support.Design.Widget.Snackbar.Make (Android.Views.View view, Java.Lang.ICharSequence text, System.Int32 duration) [0x00078] in <0d997552ddad494094d94e2a353b2022>:0 
    at Android.Support.Design.Widget.Snackbar.Make (Android.Views.View view, System.String text, System.Int32 duration) [0x00013] in <0d997552ddad494094d94e2a353b2022>:0 
    at FC.Android.Infrastructure.Activities.MainActivity.NavDrawer_NavigationItemSelected (System.Object sender, Android.Views.IMenuItem e) [0x00029] in E:\Documents\Visual Studio 2015\Projects\FC\FC.Android\Infrastructure\Activities\MainActivity.cs:73 
    --- End of managed Android.Views.InflateException stack trace --- 
android.view.InflateException: Binary XML file line #18: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:539) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
    at android.support.design.widget.Snackbar.<init>(Snackbar.java:188) 
    at android.support.design.widget.Snackbar.make(Snackbar.java:215) 
    at mono.android.view.View_OnClickListenerImplementor.n_onClick(Native Method) 
    at mono.android.view.View_OnClickListenerImplementor.onClick(View_OnClickListenerImplementor.java:30) 
    at android.view.View.performClick(View.java:5204) 
    at android.view.View$PerformClick.run(View.java:21153) 
    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:5480) 
    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) 
Caused by: android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:485) 
    ... 14 more 

我檢查下列各項:

  1. 活動的主題是從Theme.AppCompat.Light.NoActionBar
  2. 嘗試Window.DecorView.RootView繼承和FindViewById(Android.Resource.Id.Content)代替DrawerLayout這是行不通的

編輯: 我發現了一些奇怪的事情:如果我使用Debug運行應用程序,那麼會出現錯誤,如果正常運行應用程序(無需連接調試器),snackbars可以正常工作。

回答

0

使其在ContentFrame未顯示在Drawerlayout

Snackbar.Make(contentFrame, "Message", Snackbar.LengthLong).Show(); 

,不要忘記到視圖ContentFrame首先綁定到變量contentFrame

Snakbar make

+0

不幸的是'ContentFrame'不起作用要麼是 – sinanyil

+0

這是一樣的確切的錯誤? –

+0

是的,仍然是相同的錯誤 – sinanyil