Wie kann ich eine Voreinstellung implementieren, die ein einfaches Ja/Nein-Bestätigungsdialogfeld anzeigt?
Ein Beispiel finden Sie unter Browser->Setting->Clear Cache
.
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();
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:
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.
Ich habe hier eine ähnliche Frage mit einem Beispiel für die Verwendung der DialogPreference beantwortet.