Android - 如何在主页到达时退出应用程序?

时间:2016-01-15 02:41:26

标签: android android-fragments

我有一个主要活动,包含很多片段和一个主页"分段。每次我想添加片段时,我都会在主要活动中调用此方法。

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

2 个答案:

答案 0 :(得分:1)

按后退按钮/键可以查看后筹码。

  1. 添加“主页”片段时,请勿将其置于后台。

  2. 在需要时添加所有其他片段并将它们放到后面的堆栈中。

  3. 当用户按后退按钮/键时,如果后筹码组为空,退出应用,否则从后筹码中弹出片段。

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

答案 1 :(得分:0)

或者你可能想试试这个:

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

*我还没有测试过,请告诉我它是否有效。