سؤال

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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top