Antworten:
Das ist ein einfacher Alarmdialog . Federico hat Ihnen eine Website zur Verfügung gestellt, 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 möchten (ein Bestätigungsdialog mit Ja- und Nein-Optionen). Den offiziellen Quellcode finden Sie hier .
Leider ist es im com.android.internal.preference
Paket enthalten, was bedeutet, dass es Teil der privaten APIs von Android ist und Sie nicht über Ihre Anwendung darauf zugreifen können (private API-Klassen können ohne vorherige Ankündigung geändert werden, daher lässt Google Sie nicht 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 preferences.xml
wie jede andere Einstellung zu Ihrer 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 die Absichtseinstellung, wenn Sie den XML-Einstellungsbildschirm verwenden, oder wenn Sie einen benutzerdefinierten Bildschirm verwenden, 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 unten. Da unterschiedliche Personen unterschiedliche Ansätze verwenden können, können Sie jeden beliebigen Ansatz verwenden. 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 erwähnt, gibt es verschiedene Möglichkeiten, dies zu tun. Auf diese Weise können Sie Ihre Aufgabe erledigen. Bitte akzeptieren Sie die Antwort, wenn Sie das Gefühl haben, dass Sie das haben, was Sie wollten.