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

2022-09-01 05:37:15

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

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;

无论我尝试了什么,我仍然得到这个错误

我尝试了很多导航抽屉教程,但似乎没有一个工作。


答案 1

这似乎是一个问题。import

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

如果您正在使用(请参阅您的导入),那么您需要改用android.support.v4.app.FragmentgetSupportFragmentManager()

希望它有帮助


答案 2

尝试更改

import android.app.Fragment;

import android.support.v4.app.Fragment;

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


推荐