替换片段后无法切换导航抽屉(它冻结)

时间:2014-04-02 08:28:59

标签: android android-fragments fragment navigation-drawer

我使用导航抽屉来设置抽屉。 在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替换当前片段,但在此之后导航抽屉会冻结,我无法再访问它。

任何人都可以帮我解决这个问题,我一直在网上搜索一段时间,找不到问题的解决方案,为什么我决定在这里问一下,谢谢高级:)

1 个答案:

答案 0 :(得分:0)

假设您拥有所有其他所需的代码,那么使抽屉布局工作正常,我认为您应该在两种情况下都使用.replace(...)。它适用于我,即使它在完成关闭之前正在加载片段时会冻结。