it-swarm.com.ru

несовместимые типы: HomeFragment не может быть преобразован во фрагмент в 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");
    }
}

Я получил

ошибка: несовместимые типы: 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;

Что бы я ни пытался, я все равно получаю эту ошибку

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

27
Lior

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

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

Если по какой-либо причине вы используете Android.support.v4.app.Fragment (см. Ваш импорт), тогда вам нужно использовать getSupportFragmentManager() вместо

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

65
zozelfelfo

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

import Android.app.Fragment; 

в 

import Android.support.v4.app.Fragment;

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

10
ramuta

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

заменить: 

import Android.app.Fragment;

с: 

import Android.support.v4.app.Fragment;
3
Ammar Rajab

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

Строка-1: import Android.app.Fragment;

Строка-2: import Android.support.v4.app.Fragment;

Работает

3
Harunduet

используйте getSupportFragmentManager() вместо getFragmentManager()

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

вам просто нужно импортировать Android.support.v4.app.Fragment; во всех FragmentClass (); . вот и все.

1
Mehul Raj

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

0
Negatu

Если вы используете библиотеку поддержки, убедитесь, что вы импортировали Fragment и FragmentManager из библиотеки поддержки. Вам также необходимо убедиться, что загружен менеджер фрагментов поддержки.

import Android.support.v4.app.Fragment;
import Android.support.v4.app.FragmentManager;
//other imports here...

public class SomeActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_some);

        FragmentManager fm = getSupportFragmentManager();
        Fragment fragment = fm.findFragmentById(R.id.fragment_container);

        if(fragment == null) {
            fragment = new SomeFragment();
            fm.beginTransaction().add(R.id.fragment_container, fragment).commit();
        }

    }
}
0
Shripada

В Android Studio 2.3 getSupportFragmentManager работает с Android.support.v4.app, но в Android Studio 3.1 вы должны использовать getFragmentManager введите описание изображения здесь

0
Faizan Khan