des types incompatibles: HomeFragment ne peut pas être convertie Fragment de Android
J'obtiens une erreur dans cette partie de code:
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");
}
}
- Je obtenir
error: incompatible types: HomeFragment ne peut pas être convertie Fragment
c'est les importations:
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;
et c'est le titre de la classe:
public class MainActivity extends FragmentActivity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
Peu importe ce que j'ai essayé j'obtiens toujours cette erreur
J'en ai essayé beaucoup de navigation tiroir tutoriels, mais aucun d'entre eux semblent fonctionner.
- ne HomeFragment s'étend Fragment ?
- ne
HomeFragment
s'étendFragment
? - changement de FragmentActivity à l'Activité.
- Oui, HomeFragment s'étend Fragment et j'ai changé FragmentActivity à l'Activité, mais il ne fonctionne pas.
- DrawerLayout utilise également le fragment, dans votre cas, c'est à l'aide de soutien.v4 bibliothèque, et vous êtes également à l'aide du Fragment de base du kit sdk d'android (qui ne sont pas les mêmes). Prendre ces que la v4.Fragment != android.app.Fragment
- Alors... Quoi faire, je suis nouveau dans ce...
Vous devez vous connecter pour publier un commentaire.
Ce qui semble être un
import
problème.Lors de l'utilisation de
getFragmentMangager()
, assurez-vous que votreFragment
classes étendreandroid.app.Fragment
classe.Si par hasard, vous êtes à l'aide de
android.support.v4.app.Fragment
(voir votre importations), alors vous devez utilisergetSupportFragmentManager()
au lieuEspère que cela aide
FragmentManager fragmentManager = getSupportFragmentManager();
Il DitCannot resolve method
.getSupportFragmentManager()
fonctionne si votreActivity
est unFragmentActivity
si ce n'est pas le cas, utilisezgetFragmentManager()
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
ce problème:Error:(191, 52) error: incompatible types: android.support.v4.app.Fragment cannot be converted to android.app.Fragment
.fragment
objet est unandroid.support.v4.app.Fragment
et pas unandroid.app.Fragment
import android.app.FragmentManager;
àimport android.support.v4.app.FragmentManager;
getSupportFragmentManager()
dansFragmentManager fragmentManager = getSupportFragmentManager();
.Essayez de changer
import android.app.Fragment;
à
import android.support.v4.app.Fragment;
Classes de l'utilisation de cette lib pour toutes les autres importations trop. Aussi
getSupportFragmentManager()
comme mentionné dans la réponse à faire.Dans votre
HomeFragment
classeremplacer:
avec:
Dans mon cas, j'ai changé de ligne-1 de la ligne 2
Ligne-1:
import android.app.Fragment
;Ligne-2:
import android.support.v4.app.Fragment
;Son travail
vous avez juste à importer android.de soutien.v4.app.Fragment; dans tous les FragmentClass();.
c'est tout.
utilisation
getSupportFragmentManager()
au Lieu degetFragmentManager()
Dans Android Studio 2.3 getSupportFragmentManager fonctionne avec android.de soutien.v4.l'app, mais android studio 3.1, vous devez utiliser getFragmentManager entrez la description de l'image ici
importation
android.app.Fragment;
fonctionne avecgetFragmentManager()
méthode, mais avant vous devez supprimer l'importationandroid.support.v4.app.Fragment;
Si vous utilisez la bibliothèque, vous devez vous assurer d'importer à la fois Fragment et FragmentManager à partir de la bibliothèque de prise en charge. Vous aurez également besoin de s'assurer de charger le support fragment de manager.