不兼容的类型:HomeFragment 无法在 Android 中转换为 Fragment

新手上路,请多包涵

我在这部分代码中遇到错误:

 private void displayView(int position) {
    // update the main content by replacing fragments
    Fragment fragment = null;
    switch (position) {
        case 0:
            fragment = new HomeFragment();
            break;
        case 1:
            fragment =new FindPeopleFragment();
            break;
        case 2:
            fragment = new PhotosFragment();
            break;
        case 3:
            fragment = new CommunityFragment();
            break;
        case 4:
            fragment = new PagesFragment();
            break;
        case 5:
            fragment = new WhatsHotFragment();
            break;

        default:
            break;
    }

    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");
    }
}

我得到

错误:类型不兼容:无法将 HomeFragment 转换为 Fragment

这是进口:

 package liorsiag.lgbt;
import android.app.FragmentManager;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.ArrayList;

这是课程标题:

 public class MainActivity extends FragmentActivity {
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;

无论我尝试了什么,我仍然会收到此错误

我已经尝试了很多导航抽屉教程,但它们似乎都不起作用。

原文由 Lior 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

这似乎是一个 import 问题。

使用 getFragmentMangager() 时,请确保您的 Fragment 类扩展 android.app.Fragment 类。

如果您有任何机会使用 android.support.v4.app.Fragment (请参阅您的导入),那么您需要使用 getSupportFragmentManager() 代替

希望能帮助到你

原文由 zozelfelfo 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试改变

import android.app.Fragment;

import android.support.v4.app.Fragment;

也将来自该支持库的类用于所有其他导入。另外 getSupportFragmentManager() 如其他答案中所述。

原文由 ramuta 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题