AlertDialog.show() rend mon appli crash
voici mon problème :
J'essaie de montrer un AlertDialog, mais je n'arrive pas à être en mesure de le faire.
Voici mon code :
tv.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
final EditText input = new EditText(c);
AlertDialog.Builder adb = new AlertDialog.Builder(c);
adb.setTitle(lb)
.setMessage("Test")
.setView(input)
.setPositiveButton("Ok", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
//tv.setText(input.getEditableText().toString());
Toast.makeText(c, input.getEditableText().toString(), Toast.LENGTH_LONG).show();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
dialog.cancel();
}
}).show();
}
});
Je veux montrer ce AlertDialog lorsque l'utilisateur clic sur un nom, puis changer la valeur de l'étiquette, l'édition de texte lorsque l'utilisateur appuyez sur OK.
Mais quand il s'agit de montrer la boîte de dialogue, cliquez sur, il se bloque.
07-18 16:04:59.240: E/AndroidRuntime(10503): FATAL EXCEPTION: main
07-18 16:04:59.240: E/AndroidRuntime(10503): android.view.WindowManager$BadTokenException: Unable to add window --
token null is not for an application
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.view.ViewRootImpl.setView(ViewRootImpl.java:710)
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:345)
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149)
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.app.Dialog.show(Dialog.java:277)
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.app.AlertDialog$Builder.show(AlertDialog.java:932)
07-18 16:04:59.240: E/AndroidRuntime(10503): at com.technicachat.webdatadomo.Consignes$2$1.run(Consignes.java:114)
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.app.Activity.runOnUiThread(Activity.java:4784)
07-18 16:04:59.240: E/AndroidRuntime(10503): at com.technicachat.webdatadomo.Consignes$2.onClick(Consignes.java:90)
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.view.View.performClick(View.java:4211)
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.view.View$PerformClick.run(View.java:17267)
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.os.Handler.handleCallback(Handler.java:615)
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.os.Handler.dispatchMessage(Handler.java:92)
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.os.Looper.loop(Looper.java:137)
07-18 16:04:59.240: E/AndroidRuntime(10503): at android.app.ActivityThread.main(ActivityThread.java:4898)
07-18 16:04:59.240: E/AndroidRuntime(10503): at java.lang.reflect.Method.invokeNative(Native Method)
07-18 16:04:59.240: E/AndroidRuntime(10503): at java.lang.reflect.Method.invoke(Method.java:511)
07-18 16:04:59.240: E/AndroidRuntime(10503): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
07-18 16:04:59.240: E/AndroidRuntime(10503): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
07-18 16:04:59.240: E/AndroidRuntime(10503): at dalvik.system.NativeStart.main(Native Method)
Moins de lignes avant j'ai eu ce message :
07-18 16:04:56.645: I/Choreographer(10503): Skipped 32 frames! The application may be doing too much work on its main thread.
Je sais ce que cela signifie, mais je suis juste afficher une boite de dialogue, ce n'est pas ce que beaucoup de travail !
J'espère que vous les gars peut m'aider !
Bye
Qu'est-ce que le
un contexte.
Oups désolé, c'est juste le Contexte : c = getcontexteapplication();
l'ofc je suis, et nop, c n'est pas null
Est-ce le bon type de Contexte?
c
variable?un contexte.
Oups désolé, c'est juste le Contexte : c = getcontexteapplication();
l'ofc je suis, et nop, c n'est pas null
Est-ce le bon type de Contexte?
OriginalL'auteur Arthur Rey | 2013-07-18
Vous devez vous connecter pour publier un commentaire.
Votre variable
c
devrait êtreYourActivity.this
au lieu degetApplicationContext()
OriginalL'auteur Ion Aalbers
j'ai été confronté à ce problème à partir de 1,2 jours, mais j'ai résolu ce problème en changeant
boîte de Dialogue finale dialogView = new Dialog(getcontexteapplication());
à
boîte de Dialogue finale dialogView = new Dialog(Leave_Notification_Activity.c');
vous ne devez pas utiliser getcontexteapplication() au lieu de passer YourActivity.ce à résoudre ce problème.
OriginalL'auteur Zaeem Sattar
Il ya un couple de choses que vous devez considérer.
Vous êtes à la personnalisation de la boîte de Dialogue d'Alerte tels que le positionnement du bouton(s) et définition des Paramètres de Mise en page tels que les Marges de.
Si vous faites cela, l'aide de la V7 de Support de la boîte de Dialogue d'Alerte permettra de résoudre le problème. Assurez-vous que vous avez importé le v7 soutien bibliothèque dans votre projet.
Changement
android.app.AlertDialog.Builder
àandroid.support.v7.app.AlertDialog.Builder
De la création de la boîte de Dialogue d'Alerte à une Activité ou à une sous-classe de l'Activité ou à l'intérieur d'un Fragment de
Utilisation
Toujours passer le contexte d'Activité et PAS
baseContext
ouapplicationContext
passer les mauvais contexte (comme l'applicationContext ou la baseContext) sera dans un WindowManager-BadToken exception
Dans l'activité...
Dans l'activité de la sous-classe...
Dans un Fragment...
Ce que j'ai trouvé, c'est que, lourde les personnalisations apportées à la boîte de Dialogue d'Alerte fonctionne bien avec la v7 Soutien AlertDialog classe.
Dans mon cas, j'ai du centre de la boîte de Dialogue d'Alerte de boutons et de définir les marges gauche et droite, si il n'y avait plus qu'un seul bouton. Modification de l'importation de v7 soutien résolu le problème.
Espère que cette aide.
OriginalL'auteur Ram Iyer
essayer ce un toast.
OriginalL'auteur Sunil Kumar
Vous ne pouvez pas afficher quoi que ce soit avec la création de
AlertDialog
objet de classe.Maintenant ça fonctionne vérifier une fois.
OriginalL'auteur Krishna Chaitanya