2016-08-04 23 views
1

3つのタブを持つ1つのアクティビティでツールバーに問題があります。私のアプリの他のすべてのページで動作しますが、何らかの理由でこのページのメニューをクリックしようとするとクラッシュします。ここでツールバー - 重力を伴う引き出しの表示がありませんLEFT

は誤りである:ここでは

java.lang.IllegalArgumentException: No drawer view found with gravity LEFT 
                       at android.support.v4.widget.DrawerLayout.openDrawer(DrawerLayout.java:1618) 
                       at android.support.v7.app.ActionBarDrawerToggle.toggle(ActionBarDrawerToggle.java:290) 
                       at android.support.v7.app.ActionBarDrawerToggle.access$100(ActionBarDrawerToggle.java:64) 
                       at android.support.v7.app.ActionBarDrawerToggle$1.onClick(ActionBarDrawerToggle.java:200) 
                       at android.view.View.performClick(View.java:5697) 
                       at android.view.View$PerformClick.run(View.java:22526) 
                       at android.os.Handler.handleCallback(Handler.java:739) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:158) 
                       at android.app.ActivityThread.main(ActivityThread.java:7229) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

は、レイアウトのためのxmlです:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
              xmlns:app="http://schemas.android.com/apk/res-auto" 
              xmlns:tools="http://schemas.android.com/tools" 
              android:id="@+id/main_content" 
              android:layout_width="match_parent" 
              android:layout_height="match_parent" 
              android:fitsSystemWindows="true" 
              > 


<android.support.v4.widget.DrawerLayout 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="0dp"> 

    <include android:id="@+id/app_bar" 
      layout="@layout/toolbar" /> 


    <android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="48dp"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/view_pager" 
     android:layout_below="@id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 



     <fragment 
      android:name="com.bestworkouts.sheikoworkout.NavigationDrawerFragment" 
      android:id="@+id/fragment_navigation_drawer" 
      tools:layout="@layout/fragment_navigation_drawer" 
      android:layout_width="280dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      app:layout="@layout/fragment_navigation_drawer" /> 




</android.support.design.widget.AppBarLayout> 

</android.support.v4.widget.DrawerLayout> 

おかげで、誰かが私を助けることを願って!

答えて

2

あなたが引き出しレイアウトの子ビューとして引き出しのレイアウトや引き出しフラグメントを提供するために必要DrawerLayoutの子ビュー内DrawerFragmentを置くことはできません。あなたの問題を解決するにはFragmentをAppbarLayoutの外に置くだけです。ちょうどそのような :

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
               xmlns:app="http://schemas.android.com/apk/res-auto" 
               xmlns:tools="http://schemas.android.com/tools" 
               android:id="@+id/main_content" 
               android:layout_width="match_parent" 
               android:layout_height="match_parent" 
               android:fitsSystemWindows="true" 
               > 


    <android.support.v4.widget.DrawerLayout 
     android:id="@+id/drawer_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="0dp"> 

     <include android:id="@+id/app_bar" 
       layout="@layout/toolbar" /> 


     <android.support.design.widget.TabLayout 
      android:id="@+id/tab_layout" 
      android:layout_width="match_parent" 
      android:layout_height="48dp"/> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/view_pager" 
      android:layout_below="@id/tab_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 







    </android.support.design.widget.AppBarLayout> 

      <fragment 
       android:name="com.bestworkouts.sheikoworkout.NavigationDrawerFragment" 
       android:id="@+id/fragment_navigation_drawer" 
       tools:layout="@layout/fragment_navigation_drawer" 
       android:layout_width="280dp" 
       android:layout_height="match_parent" 
       android:layout_gravity="start" 
       app:layout="@layout/fragment_navigation_drawer" /> 


    </android.support.v4.widget.DrawerLayout> 
</android.support.design.widget.CoordinatorLayout> 
2

あなたは最後にCoordinatorLayoutための終了タグを持つことが不足している:</android.support.design.widget.CoordinatorLayout>

しかし、DrawerLayoutはトップレベルのレイアウトでなければならないことに気づきます。

ドキュメントから:

To use a DrawerLayout, position your primary content view as the first child with a width and height of match_parent. Add drawers as child views after the main content view and set the layout_gravity appropriately. Drawers commonly use match_parent for height with a fixed width.

だから私は、あなたがCoordinatorLayout内(DrawerLayout)それを置くべきではないと思います。

Android DrawerLayout - No drawer view found with gravity

0

java.lang.IllegalArgumentExceptionが:重力で見つかりませ引き出しビューiは右端から開くために引き出しを望んでいた を残しません。 子レイアウトの幅と高さがうまくいかず、不正な引数の例外が発生していた行がありました。
tools:openDrawer="Right"と引数の例外がなくなりました

関連する問題