使用导航抽屉时可以加载fragment.java文件

时间:2014-06-10 19:34:32

标签: java android android-fragments

我只是想知道是否可以将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文件?

1 个答案:

答案 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指南开始。