Итак, я реализовал базовый вложенный фрагмент - я добавил их в стек, чтобы onBackPressed от внутреннего фрагмента привел меня к внешнему фрагменту - однако, когда это происходит, внешний фрагмент не отвечает.
Соответствующийкод:
TaskActivity - содержит внешний фрагмент:
соответствующая функция:
public void getTaskInfo(Task currentTask){
//Open the TaskInfoFragment for this task
TaskInfoFragment taskInfo = new TaskInfoFragment();
taskInfo.setCurrentTask(currentTask);
android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.slide_in,0,0,R.anim.slide_out);
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.frag_container, taskInfo);
transaction.addToBackStack(null);
FrameLayout frameLayout = findViewById(R.id.frag_container);
frameLayout.setClickable(true);
// Commit the transaction
transaction.commit();
}
Внутренний фрагмент, запущенный из TaskInfoFragment:
NotesFragment notesFragment = new NotesFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
FrameLayout frameLayout = rootView.findViewById(R.id.notes_fragment);
frameLayout.setClickable(true);
transaction.addToBackStack(null);
transaction.add(R.id.notes_fragment, notesFragment).commit();
OnBackPressed вTaskActivity (в котором находится внешний фрагмент):
public void onBackPressed() {
if(NotesFragment.isAttached()) {
FragmentManager fm = getSupportFragmentManager();
for (Fragment frag : fm.getFragments()) {
if (frag.isVisible()) {
FragmentManager childFm = frag.getChildFragmentManager();
if (childFm.getBackStackEntryCount() > 0) {
childFm.popBackStack();
return;
}
}
}
}
else {
this.setTitle(thisTaskListTitle); //Set the title to be the TaskList's title
super.onBackPressed();
}
Я попытался установить clickable (true) для соответствующего frameLayout (того, который принадлежит внешнему фрагменту), но это не помогло.
Есть идеи?
Заранее спасибо!