0

我想在我的MainActivity上为我的用户提供汉堡包和后退箭头的属性导航。Android汉堡菜单和后退箭头

当我只有一个片段设置汉堡包,但如果我在MainActivity上添加了更多片段,请设置后退箭头。

我该如何实施?

这是我实现......

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 

private Toolbar toolbar; 
private DrawerLayout drawer; 
private NavigationView navigationView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    setSupportActionBar(toolbar); 

    final ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.addDrawerListener(toggle); 
    toggle.syncState(); 

    navigationView.setNavigationItemSelectedListener(this); 

    //TODO: Insert back arrow button if have more than one fragment on backstack 
    /*getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() { 
     @Override 
     public void onBackStackChanged() { 
      int stackHeight = getSupportFragmentManager().getBackStackEntryCount(); 
      if (stackHeight > 0) { 
       if (getSupportActionBar() != null) { 
        getSupportActionBar().setHomeButtonEnabled(true); 
        getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
        toggle.setDrawerIndicatorEnabled(false); 
       } 
      } else { 
       if (getSupportActionBar() != null) { 
        getSupportActionBar().setDisplayHomeAsUpEnabled(false); 
        toggle.setDrawerIndicatorEnabled(true); 
       } 
      } 
     } 
    });*/ 

    ActivityUtils.addFragmentToActivity(getSupportFragmentManager(), new ListVeiculoFragment(), R.id.container_main); 
} 
} 

回答

0
setSupportActionBar(toolbar); 
    toolbar.setTitle(R.string.app_name); 
    toolbar.setTitleTextColor(getResources().getColor(R.color.colorWhite)); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

把这段代码放到你使用humbarger风格的导航的工作中。

0

你必须抓住的那一刻时,碎片的数量变化,并使用此代码隐藏(假)/秀(真)DrawerToggle“汉堡包”

mDrawerToggle.setDrawerIndicatorEnabled(false); 

编辑:

在您的活动(的地方),你有这样的事情(在这里你改变当前片段):

private void selectItem(int position) { 

Fragment fragment = new MyFragment(); 

FragmentManager fragmentManager = getFragmentManager(); 
fragmentManager.beginTransaction() 
       .replace(R.id.content_frame, fragment) 
       .commit(); 
} 

我想这个变化最后一行:

fragmentManager.beginTransaction() 
       .replace(R.id.content_frame, fragment) 
       .addToBackStack(null) 
       .commit(); 

,然后检查:

if(fragmentManager.getBackStackEntryCount() > 1) mDrawerToggle.setDrawerIndicatorEnabled(false); 
+0

这可能是正确的答案,也许通过增加更多的信息.​​..... – Mohsen

+1

当您在活动中使用抽屉式导航它可以是有用的。 – lesniak

+0

您能否根据我的源代码更好地解释我一点点...我插入了一些代码... –

3

工作创造Interface类:

public interface HideShowIconInterface{ 
    void showHamburgerIcon(); 
    void showBackIcon(); 
} 

Activity实现Interface

public class YourActivity extends AppCompatActivity implements HideShowIconInterface{ 
    @Override 
    public void showHamburgerIcon() { 
     getSupportActionBar().setDisplayHomeAsUpEnabled(false); 
     mActionBarDrawerToggle.setDrawerIndicatorEnabled(true); 
    } 
    @Override 
    public void showBackIcon() { 
     mActionBarDrawerToggle.setDrawerIndicatorEnabled(false); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 
} 

在你Fragment,调用whateve R您想:

((HideShowIconInterface) getActivity()).showHamburgerIcon(); 

((HideShowIconInterface) getActivity()).showBackIcon();