[英]Android fragment on back transition
我得到了一些片段,並試圖理清它們之間的過渡。 我可以從Main-> A-> B-> C進入。 然后,一旦我用完C中的內容 ,就想回到B-> A-> Main 。 這是我想要實現的理想過渡。
但是,在我當前的代碼中,過渡有些奇怪。 我從Main-> A-> B-> C進入,然后在C內執行一些SQL以在數據庫中創建數據,一旦完成,我就回到B。 但是,從那里,當我按下后退按鈕時,它返回到C-> B-> A-> Main 。 向后過渡中沒有多余的C。
在Main內部,我這樣稱呼A :
final SettingActivity settingFragment = new SettingActivity();
ft.replace(R.id.frame,settingFragment);
ft.addToBackStack("tag");
ft.commit();
在我的A內部,我這樣稱呼B :
FragmentTransaction it = getFragmentManager().beginTransaction();
it.replace(R.id.frame,categoryFragment);
it.addToBackStack("tag");
it.commit();
在我的B內部,我這樣稱呼C :
FragmentTransaction et = getFragmentManager().beginTransaction();
et.replace(R.id.frame,editFragment);
et.addToBackStack("tag");
et.commit();
然后在C里面,當我成功在數據庫中插入一條記錄時,我這樣調用B :
// button on click listener
new GetAllCategoriesAsyncTask(
new GetAllCategoriesAsyncTask.OnRoutineFinished() {
public void onFinish() {
Bundle bundle = new Bundle();
FragmentTransaction it = getFragmentManager().beginTransaction();
bundle.putSerializable("categorylist", GetAllCategoriesAsyncTask.categoryList);
categoryFragment.setArguments(bundle);
it.replace(R.id.frame,categoryFragment);
it.addToBackStack("tag");
it.commit();
}
}).execute();
然后在我的B里面,我在onCreate()中得到了這樣的數據:
categoryList = (ArrayList<Category>) getArguments().getSerializable("categorylist");
在按鈕上單擊,從堆棧中彈出當前片段C ,而不是在堆棧中再次添加B。 因此,將按鈕onClick代碼替換為下面的代碼行:
getFragmentManager().popBackStack();
將數據傳輸到下一個屏幕時使用Bundle
。 要將數據傳輸到上一個屏幕,您需要使用回調。
作為參考,請在下面的鏈接中找到: 與其他片段通信
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.