getActivity() est nulle à l'intérieur de AlertDialog d'un fragment
Pourquoi le getActivity()
est de retourner la valeur null à l'intérieur de AlertDialog
?
C'est la classe -
Class A extends Common{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Button save = (Button) view.findViewById(R.id.save);
save.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("the activity outside dialog.."+getActivity());
AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
alert.setPositiveButton("Check acitivity",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
dialog.cancel();
System.out.println("the activity inside dialog.."+getActivity());
}
});
}
}
La Commune de la classe est l'extension fragment que -
import android.support.v4.app.Fragment;
Class Common extends Fragment
{
//Some code
}
Et la sortie est -
the activity outside dialog..com.testapp.main.MainActivity@42131080
the activity inside dialog..null
Ainsi, dans la méthode, c'est le code et où, dans le fragment du cycle de vie est-il?
Mise à jour du code. Il est à l'intérieur de la
Mise à jour du code. Il est à l'intérieur de la
onCreateView
méthode sur le bouton Enregistrer cliquez sur.OriginalL'auteur My God | 2014-07-22
Vous devez vous connecter pour publier un commentaire.
Alors quelle est la solution?
OriginalL'auteur Sudhi S
je pense que getActivity() à l'intérieur de DialogInterface vers le contexte de dialogue
à l'intérieur de votre DialogInterface essayez de la remplacer par :
Modifier : j'ai vérifié la getActivity() à l'intérieur de DialogInterface et il devrait fonctionner très bien.
une autre solution pourrait être à l'aide de onAttach fonction de Rappel et d'obtenir votre Contexte d'activité là pour être sûr que votre Fragment attaché à l'activité parent avant de l'utiliser dans la boîte de dialogue. ensuite l'utiliser à la place de getActivity().
Cela donne toujours le même résultat null.
ty pour mentionner que , j'ai vérifié qu'getActivity() à l'intérieur de DialogInterface devrait fonctionner à droite.
êtes-vous sûr que vous n'êtes pas à l'aide de support de la bibliothèque?
Je suis en utilisant la bibliothèque de prise en charge -
FragmentActivity android.support.v4.app.Fragment.getActivity()
. Quelle est la différence qu'il va faire ?OriginalL'auteur Arash GM
remplacer getActivity() A. ce
The constructor AlertDialog.Builder(A) is undefined
.OriginalL'auteur Minp
C'est parce que vous êtes à l'appel de la getActivity() de la
DialogInterface.OnClickListener
pas votre fragment vous donnant ainsi la valeur null.solution:
vous devez appeler la référence de votre classe en utilisant le
this
et appeler la méthodegetActivity()
EDIT:
il est de l'appeler à l'intérieur de la classe anonyme, alors l'appel de sa getactivity méthode qui renvoie la valeur null
Cela donne toujours le même résultat null.
eh bien, je suppose que c'est le concept de
closure
en java, mais encore je suppose que ce n'est pas la causevoir modifier ci-dessus
OriginalL'auteur Rod_Algonquin
getActivity()
retourner la valeur null jusqu'à ce Fragment de ne pas joindre à l'activité.vous pensez à créer un objet après onAttach les appels de méthode.
vous pouvez créer un objet dans
onCreateview
méthode pour les meilleures pratiques.OriginalL'auteur Imtiyaz Khalani
Bâtiment sur Sudhi S et Arash réponses, je pense que c'est une option plus propre qui traite de l'Activité localement à la méthode de l'appelant:
OriginalL'auteur Ralph Pina