Подтвердить что ты не робот

Несовместимые типы: HomeFragment не может быть преобразован в Fragment в Android

Я получаю сообщение об ошибке в этой части кода:

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

Я получаю

error: несовместимые типы: HomeFragment не может быть преобразован в Фрагмент

это импорт:

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;

Независимо от того, что я пробовал, я все еще получаю эту ошибку

Я пробовал много учебников для навигационных ящиков, но никто из них, похоже, не работает.

4b9b3361

Ответ 1

Кажется, это проблема import.

При использовании getFragmentMangager() убедитесь, что классы Fragment расширяют класс android.app.Fragment.

Если вы используете android.support.v4.app.Fragment (см. импорт), то вам нужно использовать getSupportFragmentManager() вместо

Надеюсь, что это поможет

Ответ 2

Попробуйте изменить

import android.app.Fragment;

to

import android.support.v4.app.Fragment;

Используйте классы из этой библиотеки поддержки для всех других импортных товаров. Также getSupportFragmentManager(), как указано в другом ответе.

Ответ 3

В вашем классе HomeFragment

заменить:

import android.app.Fragment;

с:

import android.support.v4.app.Fragment;

Ответ 4

В моем случае я изменил строку-1 на строку-2

Линия-1: import android.app.Fragment;

Линия-2: import android.support.v4.app.Fragment;

Работает

Ответ 5

использовать getSupportFragmentManager() Вместо getFragmentManager()

getSupportFragmentManager()
    .beginTransaction()
    .replace(in.jama.app.R.id.container, new Fragment())
    .commit();

Ответ 6

import android.app.Fragment; работает с getFragmentManager(), но перед удалением импорта android.support.v4.app.Fragment;

Ответ 7

вам просто нужно импортировать файл android.support.v4.app.Fragment; во всем FragmentClass();. что он.