Jak zaimplementować dialog potwierdzenia (tak/nie)?

Jak zaimplementować preferencję, która wyświetla proste okno potwierdzenia tak / nie?

Dla przykładu zobacz Browser->Setting->Clear Cache.

Author: Zyerah, 2011-02-26

4 answers

Jest to proste okno dialogowe alertów, gdzie możesz sprawdzić wszystko.

Oto krótki przykład, jak można zbudować okno dialogowe alertów.

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
Author: Maaalte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-16 19:39:52

Android ma wbudowaną klasę YesNoPreference, która robi dokładnie to, co chcesz (okno dialogowe potwierdzenia z opcjami tak i nie). Zobacz oficjalny kod źródłowy tutaj .

Niestety, znajduje się on w pakiecie com.android.internal.preference, co oznacza, że jest częścią prywatnych API Androida i nie możesz uzyskać do niego dostępu z aplikacji (prywatne klasy API mogą ulec zmianie bez powiadomienia, dlatego Google nie zezwala na dostęp do nich).

Rozwiązanie: wystarczy odtworzyć klasy w pakiecie Twojej aplikacji poprzez skopiowanie / wklejenie oficjalnego kodu źródłowego z podanego przeze mnie linku. Próbowałem tego i działa dobrze(nie ma powodu, dla którego nie powinno).

Możesz następnie dodać go do swojego preferences.xml, Jak każde inne preferencje. Przykład:

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

Który wygląda tak:

zrzut ekranu

 7
Author: XåpplI'-I0llwlg'I -,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-04 13:32:03

Use Intent Preference if you are using preference XML screen or you are using you custom screen then the code would be like below

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

A następnie utworzyć klasę Activity nieco jak poniżej, jak różnych ludzi, jak różne podejście można użyć dowolnego podejścia lubisz to jest tylko przykład.

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

Jak powiedziano wcześniej, istnieje wiele sposobów, aby to zrobić. jest to jeden ze sposobów, w jaki możesz wykonać swoje zadanie, Zaakceptuj odpowiedź, Jeśli czujesz, że masz to, co Ty poszukiwany.

 3
Author: PravinDodia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-12 22:37:12

Odpowiedziałem na podobne pytanie tutaj z przykładem jak korzystać z DialogPreference.

Tworzenie Dialogpreferencji z XML

 1
Author: arberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:39