2015-11-07 2 views
0

У меня есть 2 фрагмента в ландшафтном режиме, по сравнению с 1 фрагментом в портрете. Я загружаю фрагменты с помощью метода xml. Во всяком случае, я проверяю наличие второго фрагмента в первом действии и запускаю действие второго фрагмента или вызывая метод непосредственно во втором фрагменте. Все работает отлично, однако, когда пользователь изначально вращается (создавая два фрагмента), затем поворачивается назад, моя проверка на второй фрагмент теперь не является нулевой и ломает логику, поскольку она добавлена ​​в заднюю часть.Android + Запретить addToBackStack с фрагментом xml?

Как это решить? Нужно ли мне удалить фрагмент из стека истории в onPause(), возможно? Или, может быть, предотвратить каким-либо образом второй фрагмент, который когда-либо будет добавлен в backstack.

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

ответ

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

Это, кажется, работает хорошо, для моей ситуации.

Смежные вопросы