我只是想知道是否可以将fragment.java文件加载到包含所有导航抽屉代码的MainActivity中。我将包含代码片段以更好地解释自己。
MainActivity.java
@Override
public void onNavigationDrawerItemSelected(int position) {
// update the main content by replacing fragments
FragmentManager fragmentManager = getSupportFragmentManager();
switch(position){
case 0:
fragmentManager.beginTransaction()
.replace(R.id.container, SuikodenFragment.newInstance(position + 1)).commit();
break;
case 1:
fragmentManager.beginTransaction()
.replace(R.id.container, SuikodenIIFragment.newInstance(position + 1)).commit();
break;
case 2:
fragmentManager.beginTransaction()
.replace(R.id.container, SuikodenIIIFragment.newInstance(position + 1)).commit();
break;
case 3:
fragmentManager.beginTransaction()
.replace(R.id.container, SuikodenIVFragment.newInstance(position + 1)).commit();
break;
case 4:
fragmentManager.beginTransaction()
.replace(R.id.container, SuikodenVFragment.newInstance(position + 1)).commit();
break;
//similar for others
}
}
此代码中的片段也在MainActivity.java中,它们可以正常工作。但是,我想要做的是为每个案例链接一个fragment.java文件,而不是此处列出的内联片段。原因是fragment.java文件将包含带有Checkbox的Expandable ListView。因此,实现这一目标的最佳方法是什么?是否有一行代码可以加载fragment.java文件?
答案 0 :(得分:0)
是的,这是可能的。
您使用的是与您已使用的完全相同的代码,但是将SuikodenVFragment
替换为您要使用的Fragment类的名称。
假设你的项目结构如下:
/com/example/myapp
MainActivity.java
SecondFragment.java
然后您可以通过调用:
交换SecondFragment
的实例
fragmentManager.beginTransaction().replace(R.id.container,
SecondFragment.newInstance() // or new SecondFragment(), as appropriate
).commit();
唯一的" catch"是的,您需要确保在MainActivity.java的顶部导入SecondFragment
以及其他导入。但是,大多数IDE都会为您解决此问题。
如果您不熟悉Java并且以前没有使用过import语句,我建议您从Oracle的Java教程的Using Package Members指南开始。