android - android 抽屉导航上的 popBackStack()

标签 android android-studio

在我的应用程序中,我使用了 android 抽屉导航。基本上,它工作正常。在该用户中,用户可以使用抽屉导航导航到关于我们、主页等 fragment 。但是当我在标题栏上实现后退按钮时,它会打开抽屉导航而不会返回到上一个 fragment 。

例如:-

假设一个用户启动了应用程序,现在他被定向到主页 fragment 。然后用户使用抽屉导航导航到“关于我们” fragment ,然后他尝试使用后退按钮返回主页 fragment 。当他按下后退按钮时,抽屉导航会打开,而不会将他带到主页 fragment 。

我假设 Android 还会将打开抽屉导航操作添加到后台堆栈。

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
          drawer.closeDrawer(GravityCompat.START);
    } else{
        super.onBackPressed();
    }
}

这就是我在 onNavigationItemSelected(MenuItem item) 中更改 fragment 的方式

 if(fragment1 != null){
        FragmentManager fragmentManager = getSupportFragmentManager();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        FragmentTransaction ft = fragmentManager.beginTransaction();

        ft.replace(R.id.screen_area, fragment1).addToBackStack("fragment");

        ft.commit();
    }

那么,有什么方法可以返回到打开抽屉导航之前的 fragment 页面转义吗?或者有什么办法可以得到以前的 fragment 吗?

最佳答案

我假设您正在使用工具栏来显示后退箭头,您希望在进入 fragment 后禁用抽屉,因为您必须做两件事。

创建 fragment 时启用抽屉锁定模式

public void setDrawerState(boolean isEnabled) {

        if (isEnabled) {
            mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
            drawerToggle.onDrawerStateChanged(DrawerLayout.LOCK_MODE_UNLOCKED);
            drawerToggle.setDrawerIndicatorEnabled(true);
            drawerToggle.syncState();

        }
        else {
            mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
            drawerToggle.onDrawerStateChanged(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
            drawerToggle.setDrawerIndicatorEnabled(false);
            drawerToggle.syncState();
        }}

在 fragment 中添加返回按钮弹出操作。

 Toolbar toolbar = (ToolBar)getActivity().findViewById(R.id.toolbarId);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);

    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getActivity().onBackPressed();
            }
        });

关于android - android 抽屉导航上的 popBackStack(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49683339/

相关文章:

android - 如何制作可缩放的LinearLayout?

java - Android背景+文本+按钮图标

android - 错误 :(18, 0) 找不到 id 为 'io.fabric' 的插件

java - Java/Android 中的 Rss feed 布局

android - 运行后一个应用程序有两个相同的图标

android - 如何将高分辨率图像导入android studio?

android - 有没有办法生成 Android 应用程序链接而不将其上传到 Play 商店?

android - libGDX 的 Looper 错误

android-studio - 在Android库中向Google Play服务添加依赖项

android - 如何要求用户打开位置