【问题标题】:Android - How to exit application only when home page is reached?Android - 如何仅在到达主页时退出应用程序?
【发布时间】:2016-01-15 02:41:25
【问题描述】:

我有一个包含许多片段和“主页”片段的主要活动。每次我想添加一个片段时,我都会在主Activity内部调用这个方法。

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

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    您可以在按下返回按钮/键时检查您的返回堆栈。

    1. 在添加“主页”Fragment 时,不要将其放到后台堆栈中。

    2. 在需要时添加所有其他 Fragment 并将它们放入后台堆栈。

    3. 当用户按下返回键/键时,如果返回栈为空,则退出应用,否则从返回栈中弹出Fragment。

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

    【讨论】:

      【解决方案2】:

      或者你可能想试试这个:

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

      *我还没有测试过,如果它有效,请告诉我。

      【讨论】:

        猜你喜欢
        • 2011-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多