Jesmar Posté(e) 1 mai 2010 Share Posté(e) 1 mai 2010 hello :) j'aimerais créer un Dialog plus ou moins comme dans l'ex ici http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog il doit s'afficher dans le menu qui s'affiche en bas de l'écran pb : lorsque je le lance, ça crash l'AlertDialog pour quitter fonctionne bien mais le Dialog pour le about crash idea ? public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, MENU_ABOUT, 0, "À propos"); menu.add(0, MENU_QUIT, 0, "Quitter"); return true; } public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case MENU_ABOUT : menuBottomAbout(); return true; case MENU_QUIT : menuBottomQuit(); return true; } return false; } public void menuBottomAbout() { Context mContext = getApplicationContext(); Dialog dialog = new Dialog(mContext); dialog.setContentView(R.layout.about); dialog.setTitle("À propos"); /*TextView text = (TextView)dialog.findViewById(R.id.aboutText); text.setText("Hello, this is a custom dialog!");*/ /*ImageView image = (ImageView)dialog.findViewById(R.id.aboutImage); image.setImageResource(R.drawable.icon);*/ dialog.show(); } public void menuBottomQuit() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Êtes-vous sûr de vouloir quitter ?") .setCancelable(false) .setPositiveButton("Oui", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Yark.this.finish(); } }) .setNegativeButton("Non", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); } Lien vers le commentaire Partager sur d’autres sites More sharing options...
ADNFX Mobile Posté(e) 2 mai 2010 Share Posté(e) 2 mai 2010 Je ne suis sûr de rien mais essaye peut être d'utiliser ce qui est explicité plus haut onCreateDialog .... je précise bien que c'est une idée, je ne sais pas si ça va aider.... static final int DIALOG_PAUSED_ID = 0; static final int DIALOG_GAMEOVER_ID = 1; protected Dialog onCreateDialog(int id) { Dialog dialog; switch(id) { case DIALOG_PAUSED_ID: // La création de la fenêtre ABOUT break; case DIALOG_GAMEOVER_ID: // La création de la fenêtre QUITTER break; default: dialog = null; } return dialog; } Et après tu n'as plus qu'à appeller tes dialog de cette manière.... ? showDialog(DIALOG_PAUSED_ID); Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jesmar Posté(e) 2 mai 2010 Auteur Share Posté(e) 2 mai 2010 j'ai modifié le code pour mettre le showDialog et le onCreateDialog résultat : la même chose, le about plante et le quit fonctionne vu que j'ai le même résultat, je suppose que l'erreur proviendrait du code où je crée le dialog (dans onCreateDialog) mais je vois pas où est l'erreur constantes private static final int MENU_ABOUT = 1; private static final int MENU_QUIT = 2; private static final int DIALOG_ABOUT = 1; private static final int DIALOG_QUIT = 2; je crée les menus public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, MENU_ABOUT, 0, "À propos"); menu.add(0, MENU_QUIT, 0, "Quitter"); return true; } j'appelle mes fonctions pour chaque menu public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case MENU_ABOUT : menuBottomAbout(); return true; case MENU_QUIT : menuBottomQuit(); return true; } return false; } le menu about et quit où j'appelle ces showDialog public void menuBottomAbout() { showDialog(1); } public void menuBottomQuit() { showDialog(2); } et enfin le onCreateDialog où je met la création de mes 2 boites de dialogue protected Dialog onCreateDialog(int id) { switch(id) { case DIALOG_ABOUT : Context mContext = getApplicationContext(); Dialog dialog = new Dialog(mContext); dialog.setContentView(R.layout.about); dialog.setTitle("À propos"); TextView text = (TextView)dialog.findViewById(R.id.aboutText); text.setText("Hello, this is a custom dialog!"); /*ImageView image = (ImageView)dialog.findViewById(R.id.aboutImage); image.setImageResource(R.drawable.icon);*/ return dialog; case DIALOG_QUIT : AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Êtes-vous sûr de vouloir quitter ?") .setCancelable(false) .setPositiveButton("Oui", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Yark.this.finish(); } }) .setNegativeButton("Non", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); return alert; default: return null; } } Lien vers le commentaire Partager sur d’autres sites More sharing options...
popolbx Posté(e) 2 mai 2010 Share Posté(e) 2 mai 2010 un dialog ne se crée pas a la main. si tu veux faire ca utilise une activity avec un thème de dialog. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ADNFX Mobile Posté(e) 2 mai 2010 Share Posté(e) 2 mai 2010 Peux-tu poster la trace des erreurs? EDIT: Je croyais que c'était le même type, en fait un coup tu utilises AlertDialog et un autre Dialog oki ... ça viendrait donc du Dialog ... bon je sais pas trop en fait, j'utilise tout le temps AlertDialog. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Alocaly Posté(e) 2 mai 2010 Share Posté(e) 2 mai 2010 Ce serait beaucoup plus simple si tu indiquais le message qui est indiqué dans le logcat, quand ca plante. C'est là que sera indiqué la cause du crash. Comme ca, je ne vois pas trop ce qui pourrait ne pas aller. Tu es sur que ton R.layout.about est correct ? Emmanuel / Alocaly Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jesmar Posté(e) 2 mai 2010 Auteur Share Posté(e) 2 mai 2010 juste à titre d'essai, j'ai remplacé mon Dialog par un AlertDialog et là les deux marchent (au pire, je ferais ça) mon R.layout.about est bon par contre, on trouve où le logcat (ou la trace des erreurs) ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
eden91940 Posté(e) 2 mai 2010 Share Posté(e) 2 mai 2010 sous eclipse onglet logcat Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 3 mai 2010 Share Posté(e) 3 mai 2010 un dialog ne se crée pas a la main. si tu veux faire ca utilise une activity avec un thème de dialog. Tu peux faire avec un thème ou en modifiant le layout de ton AlertDialog Lien vers le commentaire Partager sur d’autres sites More sharing options...
Igosuki Posté(e) 3 mai 2010 Share Posté(e) 3 mai 2010 En fait ta méthode aurait pu marcher, mais tu aurais du regarder ce que fait le builder de l'AlertDialog :) Tout simplement l'Activité que tu renvoie en créant ton Dialog ne possède pas toutes les propriétés suffisantes pour être instanciée au sein de ton Activité... D'où l'intérêt de se faire un petit package ou une lib avec ses propres Dialog qui implémentent tout qui va bien ;) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.