Android:活动结束后返回到特定片段

Android:活动结束后返回到特定片段,android,android-fragments,android-lifecycle,Android,Android Fragments,Android Lifecycle,我有一个FragmentActivity,我目前正在通过FragmentSupportManager使用fragments功能来隐藏和显示。这样我就有了更快的片段切换,因为我无论如何都需要加载所有页面 然后我调用另一个活动,完成后使用其.finish方法停止它。我希望我的视图返回到我以前看到的片段。然而,它总是在创建/显示的第一个片段中打开 例如: Fragments[] frags = new Fragments[SIZE] fragOne.show(); fragTwo.hide(); 单

我有一个FragmentActivity,我目前正在通过FragmentSupportManager使用fragments功能来隐藏和显示。这样我就有了更快的片段切换,因为我无论如何都需要加载所有页面

然后我调用另一个活动,完成后使用其.finish方法停止它。我希望我的视图返回到我以前看到的片段。然而,它总是在创建/显示的第一个片段中打开

例如:

Fragments[] frags = new Fragments[SIZE]
fragOne.show();
fragTwo.hide();
单击按钮:

fragOne.hide();
fragTwo.show();
然后执行另一个操作以启动新活动:

new Intent();
startActivity(//Code to start activity);
活动已完成:

this.finish();
在我之前的活动中,我试图显示前面的片段

onResume(){
  showFragment(CACHED_FRAGMENT);
}
然而,即使在调试并注意到缓存的_片段确实是我的第二个片段之后,也只会显示第一个片段


谢谢您的帮助。

我对您在这里要完成的工作有点困惑,但是下面的代码可能会对您有所帮助

在活动的onCreate方法中,如果savedInstanceState为null,则加载第一个片段。这将确保在方向更改时不会再次创建第一个片段

if(savedInstanceState == null) {

    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.content_frame, new FragmentOne());
    fragmentTransaction.commit(); 

}
上述方法将第一个片段加载到活动布局中的内容框架中

当您想要显示第二个片段时,请使用以下方法

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_frame, new FragmentTwo());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit(); 
上述方法将用第二个片段替换第一个片段,并将第二个片段添加到后堆栈中。将第二个片段添加到back stack可确保back按钮将从Fragment2导航到FragmentOne,而不是在第一个活动中关闭应用程序


当您通过Intent调用第二个活动时,不要调用第一个活动的finish

只需在活动a的OnResume中编写片段加载代码:

override fun onResume() {
        super.onResume()
        supportFragmentManager
        .beginTransaction()
        .setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out)
        .replace(R.id.mainFragID, FragOrdersHolder())
         .commit()
    }

谢谢你的帮助,约翰。但是我从使用.replace切换到了.hide和.show。本周晚些时候我会发布一个更好的问题,但最近一直很忙。