2016-11-15 2 views
0

У меня есть фрагмент, в котором есть вложенная фрагмент, который я добавляю следующим образом:Уплотненный фрагмент и обратно стек

  if (home == null) { 
       home = new MyFragment(); 
       FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
       transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
       transaction.addToBackStack(MyFragment.class.getName()); 
       transaction.add(R.id.child_fragment, home).commit(); 
      } 

Когда я ввожу еще один фрагмент и вернуться обратно фрагмент ребенка сверху не существует. Я проверил, и экземпляр отличается от нуля.

ОБНОВЛЕНИЕ: Я изменил код, предложенный Ashwin S Ashok, но он все еще не работает.

+0

попробуйте использовать вместо замены. – zerocool

+0

Предполагая, что приведенный выше код находится в родительском фрагменте, работает ли он, если вы меняете 'getFragmentManager()' на 'getChildFragmentManager()'? – clownba0t

+0

add/replace дать тот же результат – charbinary

ответ

0

Попробуйте использовать эти методы:

// Используйте это, если вы не хотите, чтобы сохранить фрагмент.

protected void replaceFragmentStack(int container, Fragment fragment) { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(container, fragment); 
    fragmentTransaction.commit(); 
} 

// Используйте это, если вы хотите добавить фрагменты в стек.

protected void addFragmentStack(int container, Fragment fragment, String tag) { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
    fragmentTransaction.add(container, fragment, tag); 
    fragmentTransaction.addToBackStack(tag); 
    fragmentTransaction.commit(); 
} 
+0

Я попытался с вашим предложением, но он не работает снова. Мои другие фрагменты работают правильно, но не с вложенным фрагментом. – charbinary

0

Я хотел бы предложить вам использовать getChildFragmentManager() при совершении сделок внутри фрагмента. И его ошибка, я думаю. Вы можете проверить эту нить это поможет вам много Android 4.2: back stack behaviour with nested fragments

Также вы должны пройти через Загадочная Techizen-х blog

Вот ссылка для образца GitHub project для того же механизма

Я надеюсь, что это Вам поможет.

+0

Большое спасибо за информацию. Но я действительно хотел бы сделать это без поддержки библиотеки, потому что я должен внести много изменений в фрагменты. – charbinary

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