Fragment de l'activité se bloque sur la rotation de l'écran
J'ai un simple fragment de l'activité. Dans le onCreate() la méthode, j'ai tout simplement ajouter un fragment. Le code est affiché en dessous. Cependant, à chaque fois que je tourne l'écran, le système d'appel onCreate() de nouveau, puis il se bloque à la super.onCreate (); je suppose que c'est un général Android fragment de problème. Quelqu'un peut-il m'aider?
public class FragActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedState){
super.onCreate(savedState);
MyFragment frag = new MyFragment();
getSupportFragmentManager().beginTransaction().replace(android.R.id.content, frag)
.commit();
}
}
La trace de la pile est joint:
java.lang.RuntimeException: Impossible de démarrer l'activité ComponentInfo{}:
android.de soutien.v4.app.Fragment$InstantiationException: Impossible de
instancier fragment: assurez-vous que le nom de classe existe, est public, et a
un constructeur vide, c'est les
Et votre fragment dispose d'un constructeur vide ?
Difficile à dire sans l'ensemble de la trace de la pile. (Ces trois lignes ne sont qu'une partie d'elle.) Probablement la plus sûre de poster une bonne partie du journal entourant la trace de la pile, aussi, dans le cas où il y a quelque chose d'intéressant là-dedans. Quelle est la méthode onCreate de votre Fragment?
Êtes-vous le référencement de votre Fragment de la sous-classe à partir d'un fichier de mise en page? Avez-vous des différents fichiers de mise en page pour une orientation Portrait et Paysage?
Difficile à dire sans l'ensemble de la trace de la pile. (Ces trois lignes ne sont qu'une partie d'elle.) Probablement la plus sûre de poster une bonne partie du journal entourant la trace de la pile, aussi, dans le cas où il y a quelque chose d'intéressant là-dedans. Quelle est la méthode onCreate de votre Fragment?
Êtes-vous le référencement de votre Fragment de la sous-classe à partir d'un fichier de mise en page? Avez-vous des différents fichiers de mise en page pour une orientation Portrait et Paysage?
OriginalL'auteur Jimmy | 2011-11-09
Vous devez vous connecter pour publier un commentaire.
Bien, comme vous le message d'erreur indique que quelque chose ne va pas avec votre MyFragment classe. Assurez-vous que vous avez quelque chose comme:
lors de la déclaration de votre fragment de classe. Aussi, vous ne devriez pas avoir de constructeur dans la classe. Donc, assurez-vous que vous n'en avez pas.
Si vous affichez le code de votre Fragment de classe, nous pourrions être en mesure de mieux vous aider.
Nous avons besoin du code pour votre fragment.
Jimmy, comme je l'ai dit dans ma réponse. Vous avez besoin de faire MyFragment est public. Sinon, les choses ne fonctionnent pas.
Droit, bien sûr. Désolé, j'ai manqué. En fait j'ai mis MyFragment classe interne statique de la classe de MyActivity classe, il a travaillé. Merci encore.
"vous ne devriez pas avoir de constructeur de la classe" - est-ce correct? Je veux dire, je suppose que nous pouvons avoir des constructeurs dans la classe, mais nous avons besoin aussi d'un constructeur vide. L'erreur est clair pour moi: assurez-vous que le nom de classe existe, est public, et a un constructeur vide qui est public. Qu'avez-vous pensez?
OriginalL'auteur Kurtis Nusbaum
Votre Fragment ne devriez pas avoir de constructeurs en raison de la façon dont le FragmentManager l'instancier.
Vous devriez avoir un
newInstance()
statique de la définition de la méthode et de passer des paramètres via des arguments (bundle)Par exemple:
Et de lire ces arguments à onCreate:
De cette façon si détachée et re-joint l'état de l'objet peut être stocké par les arguments, à l'instar de faisceaux attaché à ses Intentions.
OriginalL'auteur Asaf Pinhassi
J'ai affronté le problème similaire quand j'ai renommé mon projet nom du package. Le fragment de la classe, est visé par xml de mise en page et contient généralement le nom complet du paquet.C'est là que le problème a été. Mon fragment nom de la classe avait encore du vieux nom du package.
OriginalL'auteur Shiv
Le Fragment de classe ne devrait pas être un intérieur de classe, parce qu'il est instancié en dehors de votre classe d'Activité champ d'application.
Une classe imbriquée est ok.
OriginalL'auteur amik
Ajoutant
Fixe pour moi
OriginalL'auteur mogile_oli