97 votes

showDialog déconseillée. Ce qui ' s l’alternative ?

Y a-t-il autre chose qui doit être appelée ?

C’est dans ce tutoriel , mais dit désapprouvée dans eclipse.

90voto

Md. Mahbubur R. Aaman Points 1103

À partir de http://developer.android.com/reference/android/app/Activity.html

public final void showDialog (int id) Ajout de l'API de niveau 1

Cette méthode est dépréciée de l'API de niveau 13. L'utilisation de la nouvelle DialogFragment classe avec FragmentManager; ce qui est aussi disponible sur d'anciens les plates-formes sur Android package de compatibilité.

Version Simple de showDialog(int, Bundle) à ne pas prendre de les arguments. Appelle tout simplement showDialog(int, Bundle) avec des arguments nuls.

Pourquoi

  • Un fragment qui affiche une fenêtre de dialogue, flottant au-dessus de son activité de la fenêtre. Ce fragment contient une boîte de Dialogue objet, qui s'affiche comme fondée sur le fragment de l'état. Le contrôle de la boîte de dialogue (les décisions d'afficher, de masquer, de les rejeter) doit être fait par le biais de l'API ici, pas avec des appels directs sur la boîte de dialogue.
  • Voici une belle discussion Android DialogFragment vs Dialogue
  • Une autre belle discussion DialogFragment avantages sur AlertDialog

Comment le résoudre?

Plus

8voto

Matt Ball Points 165937

D' Activity#showDialog(int):

Cette méthode est obsolète.
Utiliser le nouveau DialogFragment classe avec FragmentManager ; ce qui est également disponible sur les anciennes plates-formes sur Android package de compatibilité.

6voto

Khay Points 151

pour afficher la boîte de dialogue utiliser pouvez utiliser le code suivant , c'est à diaply un simple AlertDialog boîte avec plusieurs cases à cocher:

AlertDialog.Builder alertDialog= new AlertDialog.Builder(MainActivity.this); .
            alertDialog.setTitle("this is a dialog box ");
            alertDialog.setPositiveButton("ok", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getBaseContext(),"ok ive wrote this 'ok' here" ,Toast.LENGTH_SHORT).show();

                }
            });
            alertDialog.setNegativeButton("cancel", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                        Toast.makeText(getBaseContext(), "cancel ' comment same as ok'", Toast.LENGTH_SHORT).show();


                }
            });
            alertDialog.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    // TODO Auto-generated method stub
                    Toast.makeText(getBaseContext(), items[which] +(isChecked?"clicked'again i've wrrten this click'":"unchecked"),Toast.LENGTH_SHORT).show();

                }
            });
            alertDialog.show();

Rubrique

Alors que si vous utilisez le showDialog functionto affichage de la boîte de dialogue différente ou quoi que ce soit que par les arguments passés, vous pouvez créer une fonction et peuvent l'appeler en vertu de l' onClickListener() fonction. quelque chose comme

 public CharSequence[] items={"google","Apple","Kaye"};
public boolean[] checkedItems=new boolean[items.length];
Button bt;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bt=(Button) findViewById(R.id.bt);
    bt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            display(0);             
        }       
    });
}

et d'ajouter le code de dilaog zone donnée ci-dessus dans la définition de la fonction

3voto

MishaLee Points 16

Ce code a fonctionné pour moi. Solution facile, mais probablement pas une meilleure façon.

0voto

Martin Points 56

Je n’aime pas le nouveau chemin aussi, car il faut beaucoup de codage pour des sorties simples. Les développeurs android devraient donner une API facile, ou garder cette fonction et faire quelques codage en arrière-plan. Je voudrais savoir un TimePicker ce moyen :

Best :

les pop-ups un sélecteur qui renvoie la date et l’heure de jeu-valeurs-chaîne donnée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X