Несовместимые типы: 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;
Независимо от того, что я пробовал, я все еще получаю эту ошибку
Я пробовал много учебников для навигационных ящиков, но никто из них, похоже, не работает.
Ответы
Ответ 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();.
что он.