我知道这些类型的问题已经出现在这里,但我仍然没有找到我对这个问题的答案:
- 我创建了一个应用程序并使用了由应用程序 (AndroidStudio) 自动创建的抽屉导航
这是我所拥有的:
@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:
break;
case 2:
break;
case 3:
break;
}
}
这里还有更多:
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
return rootView;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
((MainActivity) activity).onSectionAttached(
getArguments().getInt(ARG_SECTION_NUMBER));
}
}
我想使用抽屉导航中的按钮显示另一个 fragment 。我想使用此代码,所以请不要向我发送任何制作自己的抽屉的指南或教程..
问题是,如果我想打开另一个,我应该在 case 1:
case 2:
和 case 3:
中放什么分段?
谢谢。
还有一个问题:
如何添加更多 fragment 和事务? 这不起作用-
Fragment fragment = new MyFragment1(); Fragment frag = new MyFragment2(); FragmentManager fragmentManager = getFragmentManager(); switch(position) { case 0: fragment = new MyFragment1(); break; case 1: frag = new MyFragment2(); break; } fragmentManager.beginTransaction() .replace(R.id.container, fragment).commit();
最佳答案
你应该在 onNavigationDrawerItemSelected
方法中加入一个 switch 语句。
这样的事情应该可以工作:
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
Fragment fragment;
FragmentManager fragmentManager = getFragmentManager(); // For AppCompat use getSupportFragmentManager
switch(position) {
default:
case 0:
fragment = new MyFragment1();
break;
case 1:
fragment = new MyFragment2();
break;
}
fragmentManager.beginTransaction()
.replace(R.id.container, fragment)
.commit();
}
这很快就完成了,但我认为它应该可以工作
关于java - 如何使用 Android 抽屉导航更改 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20638967/