java - 从 Activity 返回后保留 fragment

标签 java android android-fragments

我有几个由 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/

相关文章:

java - KeyStore 和 TrustStore 加载失败 - 私钥必须附有证书链

java - 如何理解java Path.toString()方法

java - 为什么unix和Java运行时显示的统计数据存在差异

android - 如何创建转换为单张 Material 的 float 操作按钮

android - Environment.getExternalStorageDirectory() 方法的 Android 文档不完整

android - 什么是 ViewModelStore 和 viewModelStoreOwner?

android - 如何在点击期间在 fragment 之间切换?

java - 从父 Activity 访问 Fragment 对象

java - 变量在 catch block 后立即被垃圾收集

android - 如何从 adb 设备名称中获取 Android AVD 名称