为什么OncreateView在非存储片段中调用?

时间:2014-10-29 20:21:31

标签: android android-fragments

我在此活动中有一个MainActivity和两个片段,例如SignupFragmentMenuFragment。首先我在SignupFragment中添加MainActivity

 FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
 ft.replace(R.id.content_frame, new SignupFragment());
            ft.commit();

重要提示:我不需要将此片段存储在backstack中

现在从SignupFragment我替换MenuFragment

  FragmentManager fm = getActivity().getSupportFragmentManager();
                fm.beginTransaction()
                .replace(R.id.content_frame, new MenuFragment(), FRAGMENT_TAG)
                .addToBackStack(null)
                .commit();

重要提示:我需要将此片段添加到backstack。例如,我有另一个像AnotherFragment这样的framgent,我将其替换为MenuFragment并将其添加到backstack中当用户在AnotherFragment按下后退按钮时,我想将他返回MenuFragment

我在OnBackPressed覆盖MainActivity,并为OnBackStackChangeListener添加了一个监听器:

   FragmentManager fm = getSupportFragmentManager();
fm.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
    @Override
    public void onBackStackChanged() {

        if (getSupportFragmentManager().getBackStackEntryCount() == 0)
            finish();
    }
});

问题当我在MenuFragment并按回按钮后,我又回到SignupFragmentOnCreateView呼叫了一会儿然后{{ 1}}被叫。(当我按下后退按钮时,finish()的视图显示片刻,然后被销毁)

问题 1-如何阻止返回SignupFragmen

2-当按下后退按钮时,为什么在SignupFragment ?中调用了OncreateView

提前致谢。

1 个答案:

答案 0 :(得分:0)

我发现了我的问题。 当我按下后退按钮时,OnBackPressed被调用,MenuFragment被显示,然后调出onCreateView SignupFragment,然后onBackStackChanged被调用,所以我在{{}}中查看{1}}:

OnBackPressed