片段中的后退按钮返回主屏幕

时间:2015-04-02 00:40:26

标签: android android-fragments

我是Android和片段的新手,所以我假设我错过了一些重要的东西。 我有一个主要活动和2个片段,第二个替换第一个取代活动。我提交了一个替换事务,但是由于某种原因,每次按下后退按钮(也是第二个片段)时,我都会忘记调用addToBackStack(null),应用程序返回桌面屏幕,应用程序可以通过最近的应用程序获得屏幕,始终显示主要活动。

为什么会这样?

MainActivity.java

...
        else if (id == R.id.action_settings) {

        FragmentTransaction fragmentTransaction = getFragmentManager()
                .beginTransaction();
        fragmentTransaction.setCustomAnimations(R.anim.enter, R.anim.exit);
        fragmentTransaction.replace(R.id.MainLayout,
                new SettingsFragment());
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();
        return true;
    }

SettingsFragment.java

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState){
...
        @Override
        public void onClick(View v) {

            FragmentTransaction fragmentTransaction = getFragmentManager()
                    .beginTransaction();
            fragmentTransaction.replace(R.id.MainLayout,
                    new SelectBackgroundFragment());
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();

        }
    });

1 个答案:

答案 0 :(得分:0)

您需要在活动中覆盖onBackPressed:

    @Override
    public void onBackPressed() {
        if (getFragmentManager().getBackStackEntryCount() > 0) {
            getFragmentManager().popBackStackImmediate();
        } else {
            super.onBackPressed();
        }
    }