Java 在navigationdrawer中设置ContentView
我对android编程有点陌生,但我在互联网上找不到答案。 我在Android Studio中设置了一个导航抽屉,如果选择了该部分,我想更改内容视图,例如,如果我在导航抽屉中选择了一个视图“工具”,我希望您可以看到布局“工具”,但也可以返回导航抽屉。我曾尝试将setContentView放入案例1中,等等,但出现了一个错误 我已为setContentView尝试了以下代码:Java 在navigationdrawer中设置ContentView,java,android,navigation,drawer,Java,Android,Navigation,Drawer,我对android编程有点陌生,但我在互联网上找不到答案。 我在Android Studio中设置了一个导航抽屉,如果选择了该部分,我想更改内容视图,例如,如果我在导航抽屉中选择了一个视图“工具”,我希望您可以看到布局“工具”,但也可以返回导航抽屉。我曾尝试将setContentView放入案例1中,等等,但出现了一个错误 我已为setContentView尝试了以下代码: public class MainActivity extends Activity implements Nav
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作为参数传递,或者根据其标题在片段本身中选择适当的布局