我正在开发一个Android应用程序,我想创建一个ListFragment并在导航抽屉中将其用作片段。有可能吗?
我制作了ListFragment,但我的主要活动有错误:
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
ListFragment lf=null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new FindPeopleFragment();
break;
case 2:
fragment = new PhotosFragment();
break;
case 3:
lf = new CommunityFragment();
break;
case 4:
fragment = new PagesFragment();
break;
case 5:
fragment = new WhatsHotFragment();
break;
default:
break;
}
if (lf != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, lf).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
错误是:FragmentFransaction类型中的方法replace(int,Fragment)不适用于参数(int,ListFragment)。
此错误发生在此行代码中(替换时):
if (lf != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, lf).commit();
其中lf是ListFragment。
我可以将ListFragment与导航抽屉一起使用吗?
答案 0 :(得分:1)
您正在使用ListFragment
中的android.support.v4.app.ListFragment
。如果您确实要使用支持包,则Activity
应该延长FragmentActivity
,然后您应该拨打getSupportFragmentManager()
而不是getFragmentManager()
。否则请使用android.app.ListFragment
。所以,你应该替换它:
import android.support.v4.app.ListFragment;
用这个:
import android.app.ListFragment;