Java 在navigationdrawer中设置ContentView

Java 在navigationdrawer中设置ContentView,java,android,navigation,drawer,Java,Android,Navigation,Drawer,我对android编程有点陌生,但我在互联网上找不到答案。 我在Android Studio中设置了一个导航抽屉,如果选择了该部分,我想更改内容视图,例如,如果我在导航抽屉中选择了一个视图“工具”,我希望您可以看到布局“工具”,但也可以返回导航抽屉。我曾尝试将setContentView放入案例1中,等等,但出现了一个错误 我已为setContentView尝试了以下代码: public class MainActivity extends Activity implements Nav

我对android编程有点陌生,但我在互联网上找不到答案。 我在Android Studio中设置了一个导航抽屉,如果选择了该部分,我想更改内容视图,例如,如果我在导航抽屉中选择了一个视图“工具”,我希望您可以看到布局“工具”,但也可以返回导航抽屉。我曾尝试将setContentView放入案例1中,等等,但出现了一个错误

我已为setContentView尝试了以下代码:

public class MainActivity extends Activity
    implements NavigationDrawerFragment.NavigationDrawerCallbacks {

/**
 * Fragment managing the behaviors, interactions and presentation of the navigation drawer.
 */
private NavigationDrawerFragment mNavigationDrawerFragment;

/**
 * Used to store the last screen title. For use in {@link #restoreActionBar()}.
 */
private CharSequence mTitle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mNavigationDrawerFragment = (NavigationDrawerFragment)
            getFragmentManager().findFragmentById(R.id.navigation_drawer);
    mTitle = getTitle();

    // Set up the drawer.
    mNavigationDrawerFragment.setUp(
            R.id.navigation_drawer,
            (DrawerLayout) findViewById(R.id.drawer_layout));
}

@Override
public void onNavigationDrawerItemSelected(int position) {
    // update the main content by replacing fragments
    FragmentManager fragmentManager = getFragmentManager();
    fragmentManager.beginTransaction()
            .replace(R.id.container, PlaceholderFragment.newInstance(position + 1))
            .commit();
}

public void onSectionAttached(int number) {
    switch (number) {
        case 1:
            //This is where I thought I could implement the setContentView

            setContentView(R.layout.activity_tools);
            mTitle = "Tools";
            break;
        case 2:
            mTitle = "Weapons";
            break;
        case 3:
            mTitle = "Mobs";
            break;
        case 4:
            mTitle = "Food";
            break;
        case 5:
            mTitle = "Blocks";
            break;
    }
}

ContentView不是您希望在抽屉项目选择时更改的内容。ContentView设置活动布局(保存NavigationDrawer视图的布局)。您真正想要的是替换片段。假设您在导航菜单中的每个项目都有一个不同的片段,具有自己的布局。在这种情况下,您可以实现如下内容:

public void onNavigationDrawerItemSelected(int position) {
    Fragment fragment;
    Bundle args = new Bundle();
    String tag;
    switch (position) {
        case 1:
            fragment = new FragmentTools();
            tag = "Tools";
            args.putString(KEY_FRAGMENT_TITLE, tag);
            break;
        case 2:
            fragment = new FragmentWeapons();
            tag = "Weapons";
            args.putString(KEY_FRAGMENT_TITLE, tag);
            break;
        case 3:
            ...
    }
    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    fragment.setArguments(args);
    transaction.replace(R.id.fragment_container, fragment, tag);
    transaction.commit();
}
以上只是一个例子。选择要显示的片段并设置其参数。当然,它可能是具有不同布局的相同片段。在这种情况下,您可以将布局id作为参数传递,或者根据其标题在片段本身中选择适当的布局