我有一个活动和三个片段,这就是生命周期:
活动 - >片段A - >片段B
我想要的是,如果我按片段B 中的后退按钮,它会显示活动
我该怎么办?
现在,如果按下后退按钮,它会显示片段A
修改 这就是我称之为Fragment B的方式
public void changeFragment(Fragment fragment, boolean addToBackStack) {
if (fragment != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.addToBackStack(null);
ft.replace(R.id.content_frame, fragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
答案 0 :(得分:2)
您正在使用add()
中的FragmentTransaction
在片段A顶部添加片段B.如果您改为使用replace()
,则片段A将替换为片段B,而不是将其添加到backstack中,这样当您在片段B中按回时,将显示Activity而不是片段A. Check { {3}}有关如何替换片段的更多详细信息。
答案 1 :(得分:1)
过了一段时间,我的解决方案是在活动中使用onBackPressed:
@Override
public void onBackPressed() {
FragmentManager fm = this.getSupportFragmentManager();
if (getSupportFragmentManager().getBackStackEntryCount() > 0 ){
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}
} else {
super.onBackPressed();
}
}