Comment mettre en œuvre une référence de dialogue de confirmation (oui/non)?

Comment puis-je implémenter une préférence qui affiche un simple dialogue de confirmation oui/non?

Pour un exemple, voir Browser->Setting->Clear Cache .

78
demandé sur Zyerah 2011-02-26 17:23:29

4 réponses

C'est un simple dialogue Alerte , Federico vous a donné un site où vous pouvez chercher des choses.

voici un bref exemple de la façon dont un dialogue d'alerte peut être construit.

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();
231
répondu Maaalte 2015-04-16 19:39:52

Android est livré avec une classe yesnopreference intégrée qui fait exactement ce que vous voulez (une boîte de dialogue Confirmer avec oui et non options). Voir le code source officiel ici .

malheureusement, il est dans le paquet com.android.internal.preference , ce qui signifie qu'il fait partie des API privées D'Android et que vous ne pouvez pas y accéder depuis votre application (les classes D'API privées peuvent changer sans préavis, d'où la raison pour laquelle Google ne vous permet pas d'y accéder).

Solution: il suffit de recréer la classe dans l'ensemble de votre demande en copiant/collant le code source officiel à partir du lien que j'ai fourni. J'ai essayé, et ça marche très bien (il n'y a aucune raison que ça ne marche pas).

vous pouvez alors l'ajouter à votre preferences.xml comme toute autre préférence. Exemple:

<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" />

qui ressemble à ceci:

screenshot

7
répondu XåpplI'-I0llwlg'I - 2013-01-04 13:32:03

utilisez la préférence D'intention si vous utilisez l'écran de préférence xml ou vous si vous utilisez l'écran personnalisé alors le code serait comme ci-dessous

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);

et puis créer Classe D'Activité un peu comme ci-dessous, comme des personnes différentes comme approche différente, vous pouvez utiliser n'importe quelle approche que vous aimez ceci est juste un exemple.

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();
}}

Comme dit avant il y a plusieurs façons de faire cela. c'est l'une des façons que vous pouvez faire votre tâche, s'il vous plaît accepter la réponse si vous pensez avoir obtenu ce que vous vouliez.

3
répondu PravinDodia 2012-09-12 22:37:12

j'ai répondu à une question similaire ici avec un exemple d'utilisation de la DialogPreference.

création d'une référence de dialogue À partir de XML

1
répondu arberg 2017-05-23 12:34:39