簡體   English   中英

向后過渡時的Android片段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM