webentwicklung-frage-antwort-db.com.de

Wie implementiere ich eine Confirmation (Ja / Nein) DialogPreference?

Wie kann ich eine Voreinstellung implementieren, die ein einfaches Ja/Nein-Bestätigungsdialogfeld anzeigt?

Ein Beispiel finden Sie unter Browser->Setting->Clear Cache.

94
sh1ng

Das ist ein einfaches Alert-Dialog , Federico hat Ihnen eine Site gegeben, auf der Sie nachschlagen können.

Hier ist ein kurzes Beispiel, wie ein Warndialog erstellt werden kann.

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();
264
Maaalte

Android verfügt über eine integrierte YesNoPreference-Klasse, die genau das tut, was Sie wollen (ein Bestätigungsdialog mit Ja- und Nein-Optionen). Siehe den offiziellen Quellcode hier .

Leider ist es im Paket com.Android.internal.preference Enthalten, was bedeutet, dass es Teil der privaten APIs von Android ist und Sie von Ihrer Anwendung aus nicht darauf zugreifen können (private API-Klassen können ohne vorherige Ankündigung geändert werden, weshalb Google dies nicht tut Sie können darauf zugreifen).

Lösung: Erstellen Sie einfach die Klasse im Paket Ihrer Anwendung neu, indem Sie den offiziellen Quellcode über den von mir angegebenen Link kopieren/einfügen. Ich habe es versucht, und es funktioniert gut (es gibt keinen Grund, warum es nicht sollte).

Sie können es dann wie jede andere Einstellung zu Ihrem preferences.xml Hinzufügen. Beispiel:

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

Welches sieht so aus:

screenshot

Verwenden Sie Intent Preference, wenn Sie Preference-XML-Bildschirm verwenden, oder wenn Sie Ihren benutzerdefinierten Bildschirm verwenden, dann sieht der Code wie folgt aus

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

Und dann erstellen Sie eine Aktivitätsklasse wie folgt: Als unterschiedliche Personen können Sie einen beliebigen Ansatz verwenden, der Ihnen gefällt. Dies ist nur ein Beispiel.

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

Wie bereits gesagt, gibt es verschiedene Möglichkeiten, dies zu tun. Dies ist eine Möglichkeit, wie Sie Ihre Aufgabe erledigen können. Akzeptieren Sie die Antwort, wenn Sie das Gefühl haben, dass Sie sie haben, was Sie wollten.

3
PravinDodia

Ich habe hier eine ähnliche Frage mit einem Beispiel für die Verwendung der DialogPreference beantwortet.

Erstellen einer DialogPreference aus XML

1
arberg