Android +使用片段xml防止addToBackStack?

时间:2015-11-07 02:00:49

标签: android android-fragments fragment-backstack

我在横向模式下有2个片段,而在纵向中有1个片段。我通过xml方法加载所述片段。无论如何,我要检查第一个活动中是否存在第二个片段,并启动第二个片段的活动或直接在第二个片段上调用方法。一切正常,但是,当用户最初旋转(创建两个片段)然后旋转回来时,我对第二个片段的检查现在不为空,并且在将其添加到后台堆栈时打破了逻辑。

如何解决这个问题?我是否需要在onPause()中从历史堆栈中删除片段?或者可能阻止第二个片段以某种方式被添加到后台。

FirstActivity:

public void onClick(View view) {    
    SecondFragment secondFragment = (SecondFragment) getSupportFragmentManager().findFragmentById(R.id.second_fragment);

    if (secondFragment != null) { // * this will no longer be not null after rotating
        // two pane layout : update second fragment
        secondFragment.updateSecondFragmentView();
    } else {
        // one pane layout : start second activity
        Intent intent = new Intent(FirstActivity.this, SecondActivity.class);

        startActivity(intent);
    }
}

SecondFragment:你推荐这个吗?

@Override
public void onPause() {
    super.onPause();

    FragmentManager fragmentManager = getActivity().getSupportFragmentManager();

    fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}

1 个答案:

答案 0 :(得分:0)

if (secondFragment != null && secondFragment.isVisible()) {
    // two pane layout : update second fragment
    secondFragment.updateSecondFragmentView();
}

对于我的情况,这似乎运作良好。