Android - 自定义后退按钮(后台堆栈)

时间:2014-09-15 13:49:00

标签: android android-activity android-fragments android-ui

我已经实现了自己的后台堆栈,但我不确定有什么问题或者我可以改进什么,我的场景:我有一个包含2个活动的项目,第一个是“SplashActivity” - 我加载了一些网络数据 - 第二个,MainActivity。

在我的MainActivity中,我有一个片段,在这个片段里面有一个webview。

后退按钮的行为应该如下:

  • 当用户未在我的网页浏览中导航时,请关闭该应用。

  • 当用户在webview中导航时,请使用浏览器的后退历史记录。

这是我的代码:

@Override
   public void onBackPressed() {

    Log.d("lastfragment", String.valueOf(fragmentStack.lastElement().getId()));

    if (fragmentStack.size() >= 2) {

        // implement normal behavior?

        Fragment activeFragment=fragmentStack.lastElement();
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        activeFragment.onPause();
        ft.remove(fragmentStack.pop());

        Fragment returnToFragment=fragmentStack.lastElement();
        String name = returnToFragment.getClass().getName();
        if(name=="SplashScreen" || name=="LoginFragment"){

            // close?

        }
        else {

            // implement normal behavior?

            returnToFragment.onResume();
            ft.show(returnToFragment);
            ft.commit();
        }
    }
    else {
        //close ??

    }

}

1 个答案:

答案 0 :(得分:0)

尝试使用此代码我希望解决这个问题。

FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(FragmentTransaction.TRANSIT_FRAGMENT_OPEN, YOUR_FRAGMENT_OBJECT);
fragmentTransaction.addToBackStack(null); // Your fragment add to back stack
fragmentTransaction.commit();