我有一个主要活动,包含很多片段和一个主页"分段。每次我想添加片段时,我都会在主要活动中调用此方法。
public void addFragment(Fragment fragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.add(R.id.fragmentContainer, fragment, "new_fragment");
ft.addToBackStack("new_fragment").commit();
}
每当用户按下电话的后退按钮时,我想要"主页"片段是用户退出应用程序之前看到的最后一页。我怎样才能做到这一点?我在MainActivity中的onBackPressed()中尝试了这个,但它不起作用(后退按钮不起作用)。
@Override
public void onBackPressed() {
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentByTag("new_fragment");
//if fragment is home page fragment, exit application
//else pop the newest fragment or go to home page fragment
if (fragment == fragDefault) {
finish();
} else {
if(fm.getBackStackEntryCount() == 0){
//display home page fragment here
}
}
}
答案 0 :(得分:1)
按后退按钮/键可以查看后筹码。
添加“主页”片段时,请勿将其置于后台。
在需要时添加所有其他片段并将它们放到后面的堆栈中。
当用户按后退按钮/键时,如果后筹码组为空,退出应用,否则从后筹码中弹出片段。
int count = getFragmentManager().getBackStackEntryCount();
if (count == 0) {
finish();
}
else {
getFragmentManager().popBackStack();
}
答案 1 :(得分:0)
或者你可能想试试这个:
if (f instanceof HomePageFragmentClass) {
finish();
} else {
//f.dosomething();
}
*我还没有测试过,请告诉我它是否有效。