Je suis très nouveau sur Android et je suis ce exemple .
Le code indique que nous devons suivre ces étapes pour obtenir une boîte de dialogue:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// 2. Chain together various setter methods to set the dialog characteristics
builder.setMessage(R.string.dialog_message)
.setTitle(R.string.dialog_title);
// 3. Get the AlertDialog from create()
AlertDialog dialog = builder.create();
Mais où est définie la méthode getActivity()
?
Je ne trouve pas cette méthode.
La méthode getActivity()
donne le contexte de l'activité. Vous pouvez utiliser YourActivityName.this
à la place.
La méthode getActivity()
est normalement utilisée dans les fragments pour obtenir le contexte de l'activité dans laquelle ils sont insérés ou gonflés.
par exemple
AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this);
ou si vous écrivez le code dans votre activité même, même
AlertDialog.Builder builder = new AlertDialog.Builder(this);
travaillera sur. S'il vous plaît n'hésitez pas à poser des doutes
new AlertDialog.Builder () a besoin de Context en tant que paramètre d'entrée. Alors essayez comme
AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this);
getActivity () est implémenté dans la classe Fragment.
Voir http://developer.Android.com/reference/Android/app/Fragment.html
Le constructeur AlertDialog.Builder
attend un paramètre Context
. Context
est accessible depuis Activity
, Service
etc., car ils sont tous extend
Context
et peuvent être passés sous la forme this
.
La méthode getActivity()
est déclarée comme les autres personnes ont été mentionnées dans la classe Fragment
.
J'ai eu exactement le même problème et j'ai finalement trouvé ce que je soupçonnais réellement .... simplement ajouter:
dialog.show();
... et le tour est joué. Voilà . Je me demande pourquoi cela n’est pas indiqué dans l’exemple original!?
Cet article explique comment créer une AlertDialog
dans une Fragment
. Dans Fragments, vous pouvez obtenir la Activity
correspondante en appelant la méthode getActivity()
. mais dans votre cas, je suppose que vous le faites dans une Activity
. de sorte que vous n'avez pas à appeler getActivity()
. utilisez simplement this
AlertDialog.Builder builder = new AlertDialog.Builder(this);
getActivity (); est une méthode de Fragment Android, si vous voulez afficher le dialogue dans votre activité, il suffit de passer this
de votre activité au lieu de getActivity()
.
getActivity()
est la méthode membre de la super classe Activité à partir de laquelle vous vous étendez. Il est défini dans le Activité classe elle-même. infact onCreate()
, onPause()
et toutes les autres fonctions sont elles aussi définies dans le parent Activité Classe.
getActivity quand vous utilisez alors pas besoin de mettre de nouvelles ... telles que
PendingIntent pi=new PendingIntent.getActivity(this,0,intent,0); //is wrong
l'utiliser comme:
PendingIntent pi=PendingIntent.getActivity(this,0,intent,0); //is Right code
ici, nous supprimons les nouveaux fournisseurs qui fournissent une nouvelle allocation, mais ici, ils fournissent leur allocation via getActivity dans dans Activity (this).
Mettre à jour l'API Android niveau 23.
Utilisez getContext()
au lieu de getActivity()
.
// 1. Instanciez un AlertDialog.Builder avec son constructeur
AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this);
// 2. Enchaînez différentes méthodes de définition pour définir les caractéristiques du dialogue
builder.setMessage(R.string.dialog_message).setTitle(R.string.dialog_title);
// 3. Obtenir le AlertDialog de create ()
AlertDialog dialog = builder.create();
// 4. Afficher le AlertDialog
dialog.show();