我使用导航抽屉来设置抽屉。 在onCreate方法的MainActivity中,我有以下设置
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout frame = new FrameLayout(this);
frame.setId(CONTENT_VIEW_ID);
setContentView(frame, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
if (savedInstanceState == null) {
setFragment(0);
}
}
我在主活动中的setFragment方法就是:
public void setFragment(int id) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
switch(id){
case 0:
fragmentTransaction.add(CONTENT_VIEW_ID, FragOne.newInstance()).commit();
break;
case 1:
fragmentTransaction.replace(CONTENT_VIEW_ID,FragTwo.newInstance()).commit();
break;
}
}
注意我已将CONTENT_VIEW_ID声明为:
private static final int CONTENT_VIEW_ID = 666;
当应用程序启动时,它会加载片段1并且工作正常。 当我轻扫导航抽屉并选择位置1时,它会用FragTwo替换当前片段,但在此之后导航抽屉会冻结,我无法再访问它。
任何人都可以帮我解决这个问题,我一直在网上搜索一段时间,找不到问题的解决方案,为什么我决定在这里问一下,谢谢高级:)
答案 0 :(得分:0)
假设您拥有所有其他所需的代码,那么使抽屉布局工作正常,我认为您应该在两种情况下都使用.replace(...)
。它适用于我,即使它在完成关闭之前正在加载片段时会冻结。