导航抽屉库片段是什么意思

时间:2017-09-21 19:00:22

标签: java android android-studio android-fragments navigation-drawer

所以我使用this library来制作导航抽屉,但有一点没有解释:

在OnItemClick函数中:

public void onItemClick(int position) {
    FragmentManager mFragmentManager = getSupportFragmentManager();
    Fragment mFragment = new FragmentMain().newInstance(mHelpLiveo.get(position).getName());

    if (mFragment != null){
        mFragmentManager.beginTransaction().replace(R.id.container, mFragment).commit();
    }
}

它告诉我FragmentMain没有得到解决。我不知道这意味着什么。我是否必须在MainActivity中创建一个新的片段?

2 个答案:

答案 0 :(得分:0)

您提供了库说明中的示例代码。此代码部分显示为实现OnItemClick侦听器的示例。在你的情况下,似乎你复制粘贴了这部分,显然,你没有FragmentMain这样的片段。为了实现导航,菜单位置可用于处理与菜单项相关的操作。

在这种特殊情况下,我想,点击带有指定位置片段管理器的菜单项后,使用新创建的片段,其中一些名称存储在mHelpLiveo列表中,并存储在与菜单位置相关的索引中。

无论如何,您必须实现自己的OnItemClick侦听器行为。让我们考虑你有菜单的情景:

  • 主页
  • 天气

在这种情况下,如果你有不同的页面onItemClick方法将有以下代码:

    public void onItemClick(int position) {
    FragmentManager fragmentManager = getSupportFragmentManager();

    Fragment fragment;
    switch(position):{
        case 0: fragment = HomeFragment.newInstance(); break;
        case 1: fragment = WeatherFragment.newInstance(); break;
        case 2: fragment = EtcFragment.newInstance; break;
        default: fragment = HomeFragment.newInstance(); break;
    }


    if (fragment != null){
        fragmentManager.beginTransaction().replace(R.id.container, fragment).commit();
    }
}

答案 1 :(得分:0)

像这样替换你的代码

在创建新实例

时,通过FragmentMain替换Fragment对象

另外我认为新的Instance是静态方法。所以你可以使用类名直接访问它。

public void onItemClick(int position){

    FragmentManager mFragmentManager = getSupportFragmentManager();
    FragmentMain mFragment =  FragmentMain.newInstance(mHelpLiveo.get(position).getName());
    if (mFragment != null){
        mFragmentManager.beginTransaction().replace(R.id.container, mFragment).commit();
    }
}