2012-06-18 3 views
1

Я хочу сделать следующее. Есть два фрагмента первого и второго. Необходимо сделать переход между ними. Когда я перехожу от первого фрагмента во втором, сначала хранящегося в стеке. Когда я нажимаю кнопку «Назад», второй фрагмент удаляется и возвращает первый фрагмент из стека. Снова я не могу войти во второй фрагмент - он был удален. Как я могу решить эту проблему?Переключение между двумя фрагментами

В основной деятельности (обратного вызова для Fragment1):

@Override 
public void onNavigate() { 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    Fragment1 newFragment1 = (Fragment1) getFragmentManager().findFragmentByTag("frag_1"); 
    Fragment2 newFragment2 = (Fragment2) getFragmentManager().findFragmentByTag("frag_2"); 
    ft.replace(R.id.main, newFragment2); 
    ft.remove(newFragment1); 
    ft.addToBackStack(null); 
    ft.commit(); 
} 

Фрагменты динамически я добавил:

FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.add(R.id.main, new Fragment1(), "frag_1"); 
    ft.add(R.id.main, new Fragment2(), "frag_2"); 
    ft.commit(); 
+0

Почему вы называете ft.remove (newFragment1); если вы уже заменили его и этим уже удалили? –

+0

На всякий случай :) Но проблема в разрушении Фрагмент 2 при нажатии клавиши Назад. – Vladimir

+0

И вы хотите получить доступ к объекту Fragment2 после нажатия кнопки «Назад»? –

ответ

0

Я решил эту проблему :). Я скрываю первый фрагмент и добавляю транзакцию в задний стек. Когда я нажимаю кнопку Назад, я возвращаюсь к фрагменту

@Override 
public void onNavigate() { 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    Fragment1 newFragment1 = (Fragment1) getFragmentManager().findFragmentByTag("frag_1"); 
    ft.hide(newFragment1); 
    ft.addToBackStack(null); 
    ft.commit(); 
} 
Смежные вопросы