我有这种情况: 两个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,但我放弃了正确的方法...