Respuesta

199

Eso es un simple alert dialog, Federico le dio un sitio donde puede buscar cosas.

Aquí hay un breve ejemplo de cómo se puede generar un diálogo de alerta.

new AlertDialog.Builder(this) 
.setTitle("Title") 
.setMessage("Do you really want to whatever?") 
.setIcon(android.R.drawable.ic_dialog_alert) 
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 

    public void onClick(DialogInterface dialog, int whichButton) { 
     Toast.makeText(MainActivity.this, "Yaay", Toast.LENGTH_SHORT).show(); 
    }}) 
.setNegativeButton(android.R.string.no, null).show(); 
+3

sé cómo construir un diálogo, pero mi q acerca de las preferencias. – sh1ng

+1

¿Su pregunta es sobre las preferencias? Bueno. Eche un vistazo aquí: http://www.kaloer.com/android-preferences – Maaalte

+1

Ya leí esta fuente. Puedo crear Preferencias personalizadas suscritas a OnClick y manejarlas, pero ¿es la manera más fácil? – sh1ng

3

Uso Preferencia Intención si está utilizando la pantalla xml preferencia o si usted está utilizando la pantalla personalizada a continuación, el código sería como a continuación

intentClearCookies = getPreferenceManager().createPreferenceScreen(this); 
    Intent clearcookies = new Intent(PopupPostPref.this, ClearCookies.class); 

    intentClearCookies.setIntent(clearcookies); 
    intentClearCookies.setTitle(R.string.ClearCookies); 
    intentClearCookies.setEnabled(true); 
    launchPrefCat.addPreference(intentClearCookies); 

Y luego Crear clase de actividad tanto como a continuación , Como personas diferentes, como enfoque diferente puede usar cualquier enfoque que desee, esto es solo un ejemplo.

public class ClearCookies extends Activity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 

    showDialog(); 
} 

/** 
* @throws NotFoundException 
*/ 
private void showDialog() throws NotFoundException { 
    new AlertDialog.Builder(this) 
      .setTitle(getResources().getString(R.string.ClearCookies)) 
      .setMessage(
        getResources().getString(R.string.ClearCookieQuestion)) 
      .setIcon(
        getResources().getDrawable(
          android.R.drawable.ic_dialog_alert)) 
      .setPositiveButton(
        getResources().getString(R.string.PostiveYesButton), 
        new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, 
           int which) { 
          //Do Something Here 

         } 
        }) 
      .setNegativeButton(
        getResources().getString(R.string.NegativeNoButton), 
        new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, 
           int which) { 
          //Do Something Here 
         } 
        }).show(); 
}} 

Como se dijo antes hay varias formas de hacerlo. esta es una de las formas en que puede hacer su tarea; acepte la respuesta si siente que la obtuvo de la forma que deseaba.

+0

¡Gracias!Esto es casi exactamente lo que necesitaba para mi aplicación ya que estoy activando el diálogo desde un servicio y en mi caso necesito una actividad para alojar el diálogo. –

+0

Me encanta. En mi humilde opinión, el modo detallado, pero aprobado y correcto – John

8

Android viene con una clase incorporada YesNoPreference que hace exactamente lo que desea (un diálogo de confirmación con sí y sin opciones). Consulte el código fuente oficial here.

Por desgracia, es en el paquete com.android.internal.preference, lo que significa que es una parte de APIs privadas de Android y no se puede acceder a él desde la aplicación (API de clases privadas están sujetas a cambios sin previo aviso, por lo tanto, la razón por la cual Google no permite accedes a ellos).

Solución: simplemente recree la clase en el paquete de su aplicación copiando/pegando el código fuente oficial del enlace que proporcioné. Intenté esto, y funciona bien (no hay ninguna razón por la que no debería).

Luego puede agregarlo a su preferences.xml como cualquier otra preferencia. Ejemplo:

<com.example.myapp.YesNoPreference 
    android:dialogMessage="Are you sure you want to revert all settings to their default values?" 
    android:key="com.example.myapp.pref_reset_settings_key" 
    android:summary="Revert all settings to their default values." 
    android:title="Reset Settings" /> 

que se parece a esto:

screenshot

+1

¡Gran solución! ¡Pero hay un problema con uno de los constructores de esta clase! Hace referencia a un recurso attr (com.android.internal.R.attr.yesNoPreferenceStyle)! Que no puede ser resuelto ¿Cuál es la solución? ¿Tengo que crear uno en mi propio proyecto? – reubenjohn

Cuestiones relacionadas