2011-03-28 835 views
14

Estoy desarrollando una aplicación en android Quiero mostrar AlertDialog si el usuario marca la casilla de verificaciónpreferencia de la pantalla de preferencias. entonces, ¿cómo puedo hacer eso ...?¿Cómo abrir AlertDialog desde la pantalla de preferencias?

+0

Ayudaría significativamente si nos deja saber qué tecnología y plataforma está utilizando. Siempre proporcione todo el contexto que pueda. –

+1

Tiene una etiqueta de Android ... –

+0

posible duplicado de [¿Cómo abrir AlertDialog desde la pantalla de preferencias?] (Http://stackoverflow.com/questions/5457944/how-to-open-alertdialog-from-preference -screen) –

Respuesta

2

Anulación onSharedPreferenceChanged en su clase PreferenceActivity:

public class MyPreferences extends PreferenceActivity implements OnSharedPreferenceChangeListener { 
    ... 
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
     if (key.equals("MyCheckboxPreferenceKey")) { 
      //Show your AlertDialog here! 
     } 
    } 
+0

@Dharmendra Sea más específico en lo que "no funciona". – GrAnd

15

prueba este ...

public class MyPreferences extends PreferenceActivity implements OnSharedPreferenceChangeListener { 

     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, 
       final Preference preference) { 

     if(preference.equals("MyCheckboxPreferenceKey")) { 

      AlertDialog.Builder builder = new AlertDialog.Builder(this); 

     builder.setMessage("Your Message"); 

     builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface dialog, int id) { 

      //action on dialog close 
      } 

     }); 

     builder.show(); 

     } 


} 
+2

Gracias está trabajando @vaibhav – Dharmendra

+1

@Dharmendra En realidad, esto requiere una declaración de devolución y requerirá que se agregue la parte principal del método a continuación para cubrir los "métodos no implementados" – LoungeKatt

+0

He votado a favor de esto en el camino, pero volviendo a él ... Tengo un problema donde no se está llamando al método onPreferenceTreeClick(). Encontré esta publicación para la solución actual que me ayudó a hacer funcionar esta lógica http://stackoverflow.com/a/12325780/2162226 – gnB

0
public class MyPreferences extends PreferenceActivity{ 
... 
//getting current context for builder 
AlertDialog.Builder build = new AlertDialog.Builder(this); 
//setting some title text 
build.setTitle("SomeTitle"); 
//setting radiobuttons list 
build.setSingleChoiceItems(new String[]{"One", "Two"}, 0, new OnClickListener() {        

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       //Some behavior here  
      } 
     }); 
     build.setNegativeButton("Cancel", new OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       //Might be empty 
      } 
     }); 
        //creating dialog and showing 
     AlertDialog dialog = build.create(); 
     dialog.show(); 
} 

eso es todo.

Cuestiones relacionadas