所以我使用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中创建一个新的片段?
答案 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();
}
}