2011-02-04 5 views
0

Aide .... J'ai un problème ... Voici la morue ...Android: Alert Dialog

@Override 
protected Dialog onCreateDialog(int id) { 
switch (id) { 
case IDD_COLOR: 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Pick a color"); 
    ListView listView = new ListView (this); 
    builder.setInverseBackgroundForced(true); 
    listView.setAdapter(new ArrayAdapter(this, android.R.layout.select_dialog_multichoice, mColors)); 

    listView.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      switch (arg2) { 
      case 0: 
       if (!((CheckedTextView)arg0.getChildAt(arg2)).isChecked()) 
       { 
        ((CheckedTextView)arg0.getChildAt(arg2)).setChecked(true); 
       } else 

        ((CheckedTextView)arg0.getChildAt(arg2)).setChecked(false); 

      break; 
      case 1: 
       if (!((CheckedTextView)arg0.getChildAt(arg2)).isChecked()) 
       { 
        ((CheckedTextView)arg0.getChildAt(arg2)).setChecked(true); 
       } else 

        ((CheckedTextView)arg0.getChildAt(arg2)).setChecked(false); 

       break; 
      case 2: 
       if (!((CheckedTextView)arg0.getChildAt(arg2)).isChecked()) 
       { 
        ((CheckedTextView)arg0.getChildAt(arg2)).setChecked(true); 
       } else 

        ((CheckedTextView)arg0.getChildAt(arg2)).setChecked(false); 

       break; 
      } 

     } 
    }); 
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 

     } 
    }); 
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 

      } 
    }); 

    builder.setView(listView); 
    return builder.create(); 
default: 
return null; 
} 

Comment annuler ce qui était en appuyant sur cliqué le bouton Annuler? Parce que tout le temps enregistrer ce qui a été cliqué.

Répondre

0

Jony,

Cela fonctionnerait-il dans votre cas?

builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
      ((CheckedTextView)arg0.getChildAt(arg2)).setChecked(false) 
      dialog.cancel(); 
     } 
}); 

Je ne l'ai pas testé, mais il semble si vous suffit de décocher la case avant d'appeler dialog.cancel(); il ne devrait pas arriver à contrôler.

+0

))) C'est une mauvaise réponse ... qu'est-ce que arg0 dans votre méthode?)) – Jim

+0

ah, désolé. vous avez raison de ne pas pouvoir accéder à la case à cocher de cette méthode. avez-vous essayé d'ajouter simplement 'dialog.cancel()' dans l'action 'setNegativeButton'? –

+0

Oui ... Cela ne fonctionne pas .... Je pense que je devrais utiliser OnPrepareDialog .... Mais je ne sais pas comment ... http: //stackoverflow.com/questions/4901837/android-alert-dialog-cancel bouton/4902885 # 4902885 – Jim