android.support.design.widget.NavigationView 上的 getFragmentManager

getFragmentManager on android.support.design.widget.NavigationView

在新的支持设计库中,我无法替换当前片段,请检查下面的代码。虽然 Toasts 正在工作并显示在屏幕上。每当我要单击导航抽屉上的任何项目时,我都会看到空白屏幕

private void setupDrawerContent(NavigationView navigationView) {
    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(MenuItem menuItem) {
            switch (menuItem.getItemId()) {
                case R.id.navigation_home:
                    getFragmentManager().beginTransaction().replace(R.id.container, new HomeFragment()).commit();
                    Toast toast;
                    toast = Toast.makeText(getApplicationContext(), "Home", Toast.LENGTH_LONG);
                    toast.show();

                case R.id.navigation_settings:
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                        getFragmentManager().beginTransaction().replace(R.id.container, new SettingsFragmentLollipop()).commit();
                    } else {
                        getFragmentManager().beginTransaction().replace(R.id.container, new SettingsFragment()).commit();
                    }
                    Toast toast1;
                    toast1 = Toast.makeText(getApplicationContext(), "Settings", Toast.LENGTH_LONG);
                    toast1.show();
            }
            menuItem.setChecked(true);
            mDrawerLayout.closeDrawers();
            return true;
        }
    });
}

尝试,如果使用 class AppCompatActivity

getSupportFragmentManager().beginTransaction().replace(R.id.container,  new HomeFragment()).commit();

我自己也在玩新库

好的,我让它工作了,经过几个小时回溯我的代码有什么问题后,我觉得自己很愚蠢。 在我的 xml 中,我使用 android.support.design.widget.CoordinatorLayout 作为 Fragment 容器,我在其中用 FrameLayout 替换它。我这样做是因为在文档中它说 CoordinatorLayout 只是一个 super FrameLayout 但我猜它不能作为片段的容器。我现在正在处理重叠的片段。