GLe*_*Lee 8 android android-fragments
我对能够在两个片段之间切换的单个活动的最佳方式感兴趣.
我已经阅读了15篇关于如何做到这一点的Stack Overflow帖子和5篇博客文章,虽然我认为我拼凑了一个解决方案,但我不相信它是最好的.因此,我希望听到人们对正确处理此问题的看法,特别是关于父活动和片段的生命周期.
以下是详细情况:
除了一般的架构建议,我还有以下突出问题:
提前致谢!
我最后使用支持片段管理器添加了两个片段,然后使用detach/attach在它们之间切换.我能够使用commitAllowingStateLoss()因为我在其他地方保留了视图的状态,并在onResume()中手动设置了正确的片段.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.my_layout, new AFragment(), TAG_A);
fragmentTransaction.add(R.id.my_layout, new BFragment(), TAG_B);
fragmentTransaction.commit();
}
public void onResume() {
super.onResume();
if (this.shouldShowA) {
switchToA();
} else {
switchToB();
}
}
private void switchToA() {
AFragment fragA = (AFragment) getSupportFragmentManager().findFragmentByTag(TAG_A);
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.detach(getSupportFragmentManager().findFragmentByTag(TAG_B));
fragmentTransaction.attach(fragA);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commitAllowingStateLoss();
getSupportFragmentManager().executePendingTransactions();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8864 次 |
| 最近记录: |