implement activity android android-preferences confirmation dialog-preference

android - activity - ¿Cómo implementar una confirmación(sí/no) DialogPreference?



implement settings android (4)

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

Lamentablemente, está en el paquete com.android.internal.preference , lo que significa que forma parte de las API privadas de Android y no puedes acceder a ella desde tu aplicación (las clases API privadas están sujetas a cambios sin previo aviso, de ahí la razón por la que Google lo hace). no te dejas acceder a ellos).

Solución: simplemente vuelva a crear 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).

A continuación, 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 ve así:

¿Cómo puedo implementar una preferencia que muestra un diálogo simple de confirmación de sí / no?

Para ver un ejemplo, consulte Browser->Setting->Clear Cache .


Ese es un diálogo de alerta simple, Federico le dio un sitio donde puede buscar cosas.

Aquí hay un breve ejemplo de cómo se puede construir 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();



Use la preferencia de intención si está usando la pantalla de preferencia xml o si está usando su pantalla personalizada, entonces el código sería como se muestra 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 a continuación, crea la clase de actividad algo así como a continuación, ya que las personas diferentes como enfoque diferente puede utilizar cualquier enfoque que le gusta 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.