Android 汉堡菜单和返回箭头

标签 android android-toolbar navigation-drawer android-navigation

我想在我的 MainActivity 上为我的用户创建一个带有汉堡包和后退箭头的属性导航。

如果我只有一个 fragment 集汉堡包,但如果我在 MainActivity 上添加了更多 fragment ,请设置返回箭头。

我该如何实现?

这是我的实现...

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);
}
}

最佳答案

通过创建 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 中,调用任何你想要的:

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

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

关于Android 汉堡菜单和返回箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41547122/

相关文章:

android - 如何跨多个 fragment 实现单个 FAB?

android - 过滤 ArrayList 和为 RecyclerView 设置适配器时滞后

android - 从 Blender 3D 到 Android Studio

android - 如何将 VectorDrawable 与 Android 工具栏一起使用?

android - 如何将工具栏添加到android中的 fragment ?

java - inflater.inflate() 方法调用时出现 InflateException

android - 在 Android 上,是否总是调用 onStopJob?

安卓工具栏 : children not matching parent height

Android 抽屉导航打不开

android - NavigationDrawer 不会从右向左移动