2015-09-20 86 views
0

我正在使用抽屜佈局如下。所以我的片段被附加到工具欄下面的框架佈局。當我告訴我的片段更改主頁按鈕從humburger用箭頭:導航抽屜交叉點家事件

drawerToggle.setDrawerIndicatorEnabled(b); 
getSupportActionBar().setDisplayHomeAsUpEnabled(show); 

的問題是 - 當我點擊箭頭按鈕,出現在活動或片段的onOptionsItemSelected沒有事件。如果我不使用drawerToggle.setDrawerIndicatorEnabled(b);箭頭按鈕將打開導航抽屜。如何解決這種行爲?

佈局

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:clickable="true" 
     android:orientation="vertical"> 

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

     <FrameLayout 
      android:id="@+id/frame" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

     </FrameLayout> 
    </RelativeLayout> 

    <LinearLayout 
     android:id="@+id/navigation_holder" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="start|center_vertical" 
     android:background="@color/bg_drawer" 

     android:clickable="true" 
     android:orientation="vertical"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="138dip" 
      android:layout_marginLeft="24dp" 
      android:layout_marginTop="11dip" 
      android:adjustViewBounds="true" 
      android:src="@drawable/ic_drawer_logo" /> 

     <ListView 
      android:id="@+id/navigation_drawer" 
      android:layout_width="match_parent" 
      android:layout_height="0dip" 
      android:layout_marginTop="8dp" 
      android:layout_weight="1" 
      android:choiceMode="singleChoice" 
      android:divider="@drawable/drawer_divider" 
      android:dividerHeight="1dip" 
      android:footerDividersEnabled="false" 
      android:listSelector="@drawable/selector" 
      android:paddingLeft="24dip" 
      android:paddingRight="24dip" /> 
    </LinearLayout> 

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

抽屜式導航設置

public void setUpNavigationDrawer(){ 
     int width = getResources().getDisplayMetrics().widthPixels * 3/4; 
     DrawerLayout.LayoutParams params = 
      (android.support.v4.widget.DrawerLayout.LayoutParams) navigationHolder.getLayoutParams(); 
     params.width = width; 
     navigationHolder.setLayoutParams(params); 
     mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 
     drawerToggle = new ActionBarDrawerToggle(
      this, mDrawerLayout, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close 
     ){ 

      @Override 
      public void onDrawerOpened(View drawerView){ 
       super.onDrawerOpened(drawerView); 

       if(!mUserLearnedDrawer){ 
        mUserLearnedDrawer = true; 
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(
         mContext 
        ); 
        sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply(); 
       } 
       invalidateOptionsMenu(); 

      } 


      @Override 
      public void onDrawerSlide(View drawerView, float slideOffset){ 
       super.onDrawerSlide(drawerView, slideOffset); 
      } 


      @Override 
      public void onDrawerClosed(View drawerView){ 
       super.onDrawerClosed(drawerView); 
       if(needToChangePage){ 
        onNavigationDrawerItemSelected(
         (int) drawerView.getTag() 
        ); 
       } 
       needToChangePage = false; 

      } 
     }; 

     if(!mUserLearnedDrawer){ 
      mDrawerLayout.openDrawer(navigationHolder); 
     } 
     mDrawerLayout.post(
      new Runnable(){ 

       @Override 
       public void run(){ 
        drawerToggle.syncState(); 
       } 
      } 
     ); 
     mDrawerLayout.setDrawerListener(drawerToggle); 
    } 

Switching between Android Navigation Drawer image and Up caret when using fragments嘗試的方法從這裏開始,但結果相同

回答

0

要收聽點擊上android.R.id.home時導航抽屜被設置爲需要添加工具欄監聽器

drawerToggle.setToolbarNavigationClickListener(
      new View.OnClickListener(){ 

       @Override 
       public void onClick(View v){ 
        getSupportFragmentManager().popBackStackImmediate(); 
       } 
      } 
     ); 

此聽衆只有在drawerToggle.setDrawerIndicatorEnabled(false);