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

Lio*_*ior 31 java android android-fragments

我在这段代码中遇到错误:

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

我明白了

错误:不兼容的类型: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;
Run Code Online (Sandbox Code Playgroud)

这是班级标题:

public class MainActivity extends FragmentActivity {
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;
Run Code Online (Sandbox Code Playgroud)

无论我尝试过什么,我仍然会遇到这个错误

我已经尝试了很多导航抽屉教程,但它们似乎都没有用.

zoz*_*lfo 71

这似乎是一个import问题.

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

万一你正在使用android.support.v4.app.Fragment(请参见进口),那么你需要使用getSupportFragmentManager()替代

希望能帮助到你

  • `getSupportFragmentManager()`如果你的`Activity`是一个`FragmentActivity`就行了,如果不是这样的话,请使用`getFragmentManager()` (3认同)

小智 10

尝试改变

import android.app.Fragment;

import android.support.v4.app.Fragment;

对于所有其他导入,也使用该支持库中的类.另外getSupportFragmentManager()如其他答案所述.