我有一个FragmentActivity,我目前正在使用片段功能通过片段支持管理器隐藏和显示。这样我就可以更快地进行片段切换,因为无论如何我都需要加载所有页面。
然后我调用另一个活动,在完成它之后使用它的.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);
}
然而,即使在调试并注意到cached_fragment确实是我的第二个片段之后,只会显示第一个片段。
感谢您的帮助。
答案 0 :(得分:1)
我对你在这里想要完成的事情感到有点困惑,但是下面的代码可能对你有帮助。
在Activity中,如果在Activity的onCreate()方法中savedInstanceState为null,则加载第一个Fragment。这将确保在方向更改时不会再次创建第一个片段。
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();
上面的方法将用你的第二个片段替换你的第一个片段,并将第二个片段添加到后栈。将第二个片段添加到后台堆栈可确保后退按钮将从FragmentTwo导航到FragmentOne,而不是在第一个Activity中关闭应用程序。
当您通过Intent调用第二个Activity时,请不要在第一个Activity上调用finish()。
答案 1 :(得分:0)
只需在活动a的OnResume中编写片段加载代码:
Your Hole Cards: ♦Four♦ | ♣Five♣
Flop: ♣Two♣ | ♣Ace♣ | ♦Two♦
Turn: ♣Two♣ | ♣Ace♣ | ♦Two♦ | ♠Seven♠
River: ♣Two♣ | ♣Ace♣ | ♦Two♦ | ♠Seven♠ | ♠Ace♠