gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 00:02:25 30 4
gpt4 key购买 nike

在我的应用程序中,我使用了 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com