2016-04-26 59 views
5

我所有的碎片都通过ActionBarActivitymainActivity)控制,内部mainActivity一个DrawerLayout实现和所有的子片段通过drawerLayout的列表项单击推。我面对的问题是在通过drawerLayout推送片段之后,我想将抽屉图标更改为ToolBar的背部图标,以便用户可以导航到之前的片段并处理android.R.id.home的回调相同的片段或内部的mainActivity管理工具栏上的导航和后退按钮从片段片段的Android

回答

11

你必须添加Fragment背堆和片段经理添加听者这样

getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() { 
      @Override 
      public void onBackStackChanged() { 
       if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
        getSupportActionBar().setDisplayHomeAsUpEnabled(true); // show back button 
        toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          onBackPressed(); 
         } 
        }); 
       } else { 
        //show hamburger 
        getSupportActionBar().setDisplayHomeAsUpEnabled(false); 
        toggle.syncState(); 
        toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          drawerLayout.openDrawer(GravityCompat.START); 
         } 
        }); 
       } 
      } 
     }); 
+0

非常感谢..它工作.. :) – vini

+0

@vini欢迎编码快乐:) –

+1

Яискалэто оченьдолго!!! Спасибоогромное!!! //我找了很久!!!非常感谢!!! –