0

Открываю операцию «А». «Активность A» немедленно делает FragmentTransaction как это открыть «Фрагмент A»:Нельзя добавить в Фрагмент Back Stack

FragmentTransaction t = fm.beginTransaction(); 
ListFragment f = new ProfileFragment(); 
t.replace(R.id.main_frag, f, "act_frag"); 
f.setArguments(args); 
t.commit(); 

«Фрагмент» имеет кнопку на нем, что я хотел бы открыть новую Fragment («Осколок B»), но держите «Фрагмент А» в задней части экрана - так что если пользователь ударит назад, он все еще вокруг. Так что я делаю это:

FragmentTransaction t = fm.beginTransaction(); 
ListFragment f = new FollowFragment(); 
String username = tvUser.getText().toString(); 
Bundle args = new Bundle(); 
args.putString("follow", "watching"); 
args.putString("userprofile", username); 
args.putInt("userIdprofile", userId); 
f.setArguments(args); 
t.replace(R.id.main_frag, f, "watching_frag"); 
t.addToBackStack("watching_frag"); 
t.commit(); 

Я думал, добавив t.addToBackStack(null); будет делать трюк; и я сделал это раньше. Но вместо этого, когда пользователь ударяет по спине, он просто закрывает «Activity A».

ответ

1

По умолчанию при нажатии кнопки «Назад» действие закрывается. Я думаю, что вы пытаетесь сделать, вы должны переопределить метод onBackPressed и добавить код для обработки, что , например:

@Override 
public void onBackPressed() { 

    FragmentManager fm = getSupportFragmentManager(); 
    if(fm.getBackStackEntryCount() > 0){ 
     fm.popBackStack(); 
     return; 
    } 
    super.onBackPressed(); 
} 

Таким образом, при нажатии назад, он будет первым проверить, если есть какие-либо записи в backstack и popback при нажатии клавиши назад, если нет, вызывается действие по умолчанию.

+0

Я думаю, что ты прав. Позвольте мне добавить и посмотреть. – KickingLettuce

+0

Это было именно это, спасибо. Маркировка правильная. – KickingLettuce

+0

Wait .. является транзакцией фрагмента для добавления «фрагмента B», происходящего внутри «фрагмента A» или активности? – Eric

0

Вы пробовали поместить некоторую ценность внутри t.addtoBackStack вместо просто нулевого? Я не могу проверить это прямо сейчас, но я думаю, что это может быть вашей проблемой.

+0

Спасибо, но это не сработало; Я изменил код выше, чтобы отразить то, что я сделал. – KickingLettuce

+0

Ну, это странно. Я тестировал ваш код, и он работает нормально. Вы, случайно, переопределяете onBackPressed()? – Vextil

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