同时返回两个片段时,返回问题addToBackStack

时间:2019-01-12 10:31:47

标签: android android-fragments fragment

我有这种情况: 两个FrameLayout R.id.detail和R.id.master,在其中我要放置不同的片段。 片段A是一个列表,当我单击项目时,用B更改片段A,同时我想用G更改片段F。 为此,请使用以下代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
.
.
AFragment aFragment = AFragment.newInstance(0);
        fragmentManager.beginTransaction()
                .add(R.id.detail_fragment_container, aFragment, TAG_FRAGMENT_PAGE_A)
                .commit();

MasterFragment masterFragment = MasterFragment.newInstance();
        fragmentManager.beginTransaction()
                .add(R.id.master_fragment_container, masterFragment, TAG_MASTER_FRAGMENT)
                .commit();

.
.
}

当我单击项目时,我会在AFragment内更改片段

    getSupportFragmentManager()
                    .beginTransaction()
                    .addToBackStack(TAG_FRAGMENT_DETAIL_A)
                    .replace(R.id.detail_fragment_container,
                            DetailAFragment.newInstance(position, Id),
                            TAG_FRAGMENT_DETAIL_A)
                    .commit();
//change the lateral fragment master
fragmentManager
            .beginTransaction()
            .addToBackStack(TAG_MASTER_DETAIL_DATA_FRAGMENT)
            .replace(R.id.master_fragment_container, DetailDataFragment.newInstance(mainIDRicetta, mainRicetta),TAG_MASTER_DETAIL_DATA_FRAGMENT)
            .commit();

当我单击FAB时,我更改了id.detal容器,但没有更改id.master

getFragmentManager().beginTransaction()
.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_left, R.anim.exit_to_right)
 .addToBackStack(TAG_FRAGMENT_HEADER_RICETTA)
.replace(R.id.detail_fragment_container, HeaderDetailFragment.newInstance(IDRicetta, ricetta), TAG_FRAGMENT_HEADER_RICETTA)
 .commit();

问题是当用户按下BACK按钮时,有些时候效果很好

AF-> BG-> CG .... back BG ... back AG,但是id.master不遵循相同,有些时间仍然设置为G而不返回F 我尝试使用其他的addToBackStack,但我放弃了正确的方法...

enter image description here

0 个答案:

没有答案