Trouver Fragment de Vue sur l'Activité. Android findFragmentByTag(point de Chaîne) renvoie la valeur null
Je vais essayer d'obtenir un Spinner Vue d'un ajout Fragment
à mon activité, mais il semble que je ne peux pas obtenir le fragment, ni la vue.
J'ai une Activité qui ajoute une Fragment
à LinearLayout
, le fragment de la mise en page est basée sur le "extra" qui vient de l'intention de l'Activité. Tout s'affiche correctement et je peux voir tous les points de vue du fragment, mais pour une raison quelconque, quand je l'appelle findFragmentByTag(String tag)
, elle renvoie null et donc je ne peux pas appeler getView().
Ici est de savoir comment je suis ajoutant le fragment de code pour mon activité:
...onCreate(){
...
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment fr = new Fragment(){
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(layoutID, container, false);
}
};
ft.add(R.id.formsListActivity_Container, fr, "form_fragment_tag");
ft.commit();
...
}
Alors j'essaie d'obtenir un tel fragment et obtenir un spinner vue d'ajouter le tableau de chaîne:
Fragment f = fm.findFragmentByTag("form_fragment_tag");
Spinner spinner = (Spinner) f.getView().findViewById(R.id.city_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.city_list, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Mais j'obtiens une exception nulle parce que findFragmentByTag() renvoie la valeur null
Ce que je fais mal? J'ai vérifié le code plusieurs fois et les étiquettes sont les mêmes.
J'ai aussi assurez-vous que le cône de l'id est dans le fichier XML du fichier de mise en page correctement, et le fragment est le chargement de la bonne mise en page XML parce que je peux le voir (Si un commentaire de l'obtenir de la vue à partir du fragment de la partie).
- Je sais que ce post est vieux, mais si vous placez le
Fragment
dans sa propre classe, les choses seront beaucoup plus faciles.
Vous devez vous connecter pour publier un commentaire.
J'ai résolu le problème, il semble que sur la base du cycle de vie à la fois l'activité et le fragment, le temps que la findFragmentById() est exécutée dans le onCreate() le fragment n'a pas été effectivement créé', j'ai testé en ajoutant un simple bouton pour la mise en page et de faire une méthode que lors d'un clic sur le bouton de la toupie sera rempli avec des données.
Mais bien sûr, je ne veux pas que l'utilisateur clique sur un bouton "Load" pour remplir le compteur, à la place j'ai mis en place sur mon fragment de la
public void onActivityCreated()
méthode.Pour référence, voici mon code du fragment:
J'ai eu le même problème je l'ai résolu en appelant le
findFragmentByTag()
dans lecycle de vie de la méthode.
Essayez de changer
false
àtrue
dans votre gonfler ligne.attachToRoot - Whether the inflated hierarchy should be attached to the root parameter? If false, root is only used to create the correct subclass of LayoutParams for the root view in the XML.
je ne comprends vraiment pas ce que cela signifie.