安卓 - 如何仅在到达主页时退出应用程序



我有一个主活动,它承载了很多片段和一个"主页"片段。每次我想添加一个片段时,我都会在 main 活动中调用此方法。

    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
            }
        }
    }

您可以在按下后退按钮/键时检查后退堆栈。

  1. 添加"主页"片段时,不要将其放在后退堆栈中。

  2. 在需要时添加所有其他片段,并将它们放入后堆。

  3. 当用户按下后退按钮/键时,如果后退堆栈为空,退出应用程序,否则从后退堆栈弹出片段。

int count = getFragmentManager().getBackStackEntryCount();
if (count == 0) {
    finish();
}
else {
    getFragmentManager().popBackStack();
}
或者,

您可能想尝试以下操作:

if (f instanceof HomePageFragmentClass) {
    finish();
} else {
    //f.dosomething();
}

*我还没有测试过,让我知道它是否有效。

最新更新