我有几个由 Activity 维护的 fragment 。该应用程序从“主页” fragment 开始,当我转到“fragment A”,然后转到“设置” Activity 并从“设置” Activity 返回时,“fragment A”被“主页” fragment 替换。从“设置” Activity 返回时,如何保留“fragment A”的状态并保持抽屉打开?
为了澄清,我想返回到我启动 Activity 的 fragment ,在本例中是设置 Activity ,而不是返回到“主页” fragment 。任何帮助将不胜感激,谢谢!
这是我的抽屉代码:
if (id == R.id.fragOne) {
fragment1 = new FragmentOne();
android.support.v4.app.FragmentManager fragmentManager1 = getSupportFragmentManager();
fragmentManager1.beginTransaction()
.replace(R.id.container, fragment1, "frag1")
.commit();
} else if (id == R.id.fragTwo) {
fragment6 = new fragmentTwo();
android.support.v4.app.FragmentManager fragmentManager2 = getSupportFragmentManager();
fragmentManager2.beginTransaction()
.replace(R.id.container, fragment2, "frag2")
.commit();
} else if(id == R.id.helpDrawer){
Intent drawerHelp = new Intent(MainActivity.this, Help.class);
startActivity(drawerHelp);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer != null) {
drawer.closeDrawer(GravityCompat.START);
}
return true;
最佳答案
尝试在设置 Activity 中按下后退按钮时添加 finish()。当我们从其他 Activity 调用一个 Activity 时,调用者 Activity 的实例状态将被保存,因此您的 fragment 将保存在堆栈中,然后被调用的 Activity 将被调用,因此如果您想返回,只需完成第一个 Activity 和调用者 Activity 的实例状态将被调用,您将获得与调用设置 Activity 相同的 fragment 。 所以在 SettingsActivity 中添加这段代码。
@Override
onBackPressed{finish();}
这将解决您的 fragment 问题。我不确定抽屉是否保持打开状态。
关于java - 从 Activity 返回后保留 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39912116/