2013-05-29 3 views
1

Сначала я использую метод replace, чтобы добавить фрагменты в задний стек, после чего я нашел, когда я нажимаю клавишу «назад», фрагмент в стеке снова вызовет onCreateView, я также нашел это так что я думаю, что это не ошибка, но я хотел бы добиться эффекта, как и поведение активности, когда I нажмите клавишу «Назад», предыдущая активность не вызовет метод onCreate.после добавления фрагмента предыдущий фрагмент все еще видна

Позже я обнаружил, что fragmentManager.add() может достичь моей идеи, но появляется еще один пробром, когда добавляется второй фрагмент, предыдущий фрагмент остается заметным.

Может ли кто-нибудь мне помочь?

FragmentManager manager = getSupportFragmentManager(); 
     FragmentTransaction transaction2 = manager.beginTransaction(); 
     transaction2.add(R.id.fl, f2); 
     transaction2.addToBackStack("Fragment2"); 
     transaction2.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     transaction2.commit(); 
+0

Это сработало для меня. http://stackoverflow.com/questions/14810348/android-fragment-replace-doesnt-replace-content-puts-it-on-top –

ответ

0

Возврат к использованию замените и просто добавьте чек, чтобы узнать, равен ли пучок.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    ... 
    if (savedInstanceState == null) { 
     // do work 
     // If the view is being recreated this code won't run 
    } 
    ... 
} 
2

пытается использовать «заменить» вместо „добавить“

части кода

fragmenttransaction.replace(R.id.realtabcontent, Fragment); fragmenttransaction.commit();

0

Проверьте, если вы установили ARGB фон для ваших фрагментов. В этом случае замените этот фон на rgb. a a означает прозрачный.

0

Попробуйте использовать

manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 

перед добавлением нового FragmentTransaction См here

0

Если вы добавляете фрагмент в первый раз, вы можете добавить фрагмент, как в вашем коде.

Fragment_Home fragment = new Fragment_Home(); 
     FragmentTransaction fts = (MainActivity.this).getSupportFragmentManager().beginTransaction(); 
     fts.add(R.id.frame_container, fragment); 
//  fts.addToBackStack(fragment.getClass().getSimpleName()); 
     fts.commit(); 

Если вы хотите перейти к другому фрагменту, то вы должны заменить текущий фрагмент на новый.

Fragment_CreateGroup fragment = new Fragment_CreateGroup(); 
      fts = (MainActivity.this).getSupportFragmentManager().beginTransaction(); 
//   fts.addToBackStack(fragment.getClass().getSimpleName()); 
      fts.replace(R.id.frame_container, fragment); 
      fts.commit(); 

Здесь fts является объектом FragmentTransaction определяется на вершине.

+0

, и если мы снова добавим фрагмент, что произойдет потом? Сохраняется ли предыдущий? Если после уничтожения нового фрагмента мы можем вернуться к предыдущему фрагменту, где мы оставили фрагмент? –