我試圖在使用片段時實現後端堆棧,但是當使用「後退」按鈕時,我一直在將應用程序移出主屏幕。實現與片段的後端堆棧
活動打開片段A;片段A有一個可點擊的TextView打開片段B(這是可行的)。點擊BACK應該會將我返回到片段A,但它會將我帶到主屏幕。
這裏是活動的號召,片段A的onCreate
開口道:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragment_layout_container, new FragmentLogin(), "fragment_login")
.addToBackStack("login_screen")
.commit();
Log.d("Back", getFragmentManager().getBackStackEntryCount() +" <- Entry Count at LoginActivity.onCreate");
在這一點上,日誌打印0 <- Entry Count at LoginActivity.onCreate
。這是我做錯了從打印1.
然後保持此,該片段A有這個監聽器:
forgottenPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_layout_container, new FragmentForgottenPassword(), "fragment_password")
.addToBackStack("forgotten_password")
.commit();
Log.d("Back", getFragmentManager().getBackStackEntryCount() + " <- Entry Count at FragmentLogin.onCreateView.Listener");
}
});
日誌這裏打印1 <- Entry Count at FragmentLogin.onCreateView.Listener
。在這裏,偵聽器工作並打開片段B - 但後退按鈕將我返回到主屏幕。