【发布时间】:2016-01-06 10:24:43
【问题描述】:
这是我的主要活动。我正确关注了 this guide 关于 Fragments 的信息。当我单击“返回”按钮时,我的应用程序将关闭,而不是返回到 MainScreenFragment。为什么会发生这种情况以及为什么 addToBackStack() 不起作用?
public class MainScreenActivity extends ActionBarActivity implements MainScreenFragment.OnFrameChoiced {
private MainScreenFragment mainScreenFragment;
private AddWordsFragment addWordsFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_screen);
mainScreenFragment = new MainScreenFragment();
addWordsFragment = new AddWordsFragment();
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.container, mainScreenFragment).addToBackStack(null).commit();
}
@Override
public void choiceFrame(int id) {
switch (id) {
case R.id.add_new_words_frame:
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.container, addWordsFragment).addToBackStack(null).commit();
fm.executePendingTransactions();
break;
}
}
附:我尝试使用来自this 主题的解决方案,但它仍然不起作用。
【问题讨论】:
-
您需要覆盖后退按钮的行为才能将片段从后退堆栈中弹出。
-
你能解释一下我需要覆盖哪种方法吗?我试图覆盖
onBackPressed(),但它仍然不起作用。 -
你是怎么做到的?
getFragmentManager().popBackStack();应该,嗯,弹出回栈。 -
哦,谢谢,现在可以用了))