我可以将ListFragment与导航抽屉一起使用吗?

时间:2014-04-01 20:10:31

标签: android android-listfragment navigation-drawer

我正在开发一个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与导航抽屉一起使用吗?

1 个答案:

答案 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;