I am working on an android app and I want to make a ListFragment and use it in navigation drawer as a fragment. It is possible?
I make the ListFragment but i have errors on my main activity:
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");
}
The error is: the method replace(int,Fragment) in the type FragmentFransaction is not applicable for the arguments (int,ListFragment).
This error is at this line of code(at replace):
if (lf != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, lf).commit();
where lf is a ListFragment.
So can I use ListFragment with Navigation Drawer?
You are using ListFragment
from android.support.v4.app.ListFragment
. If you indeed want to use support package, your Activity
should extend FragmentActivity
and then you should call getSupportFragmentManager()
instead of getFragmentManager()
. Otherwise please use android.app.ListFragment
. So, probaly you should replace this:
import android.support.v4.app.ListFragment;
with this:
import android.app.ListFragment;