Pertanyaan Bagaimana cara mengimplementasikan konfirmasi (ya / tidak) DialogPreference?


Bagaimana saya bisa menerapkan Preferensi yang menampilkan dialog konfirmasi ya / tidak yang sederhana?

Sebagai contoh, lihat Browser->Setting->Clear Cache.


75
2018-02-26 14:23


asal


Jawaban:


Itu sederhana dialog peringatan, Federico memberi Anda sebuah situs di mana Anda dapat melihat berbagai hal.

Berikut ini contoh singkat tentang bagaimana dialog peringatan dapat dibuat.

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

217
2018-02-26 14:39



Android hadir dengan kelas YesNoPreference bawaan yang melakukan apa yang Anda inginkan (dialog konfirmasi dengan opsi ya dan tidak ada). Lihat kode sumber resmi sini.

Sayangnya, itu ada di dalam com.android.internal.preference paket, yang berarti itu adalah bagian dari API pribadi Android dan Anda tidak dapat mengaksesnya dari aplikasi Anda (kelas API pribadi dapat berubah tanpa pemberitahuan, maka alasan mengapa Google tidak membiarkan Anda mengaksesnya).

Larutan: cukup buat ulang kelas di paket aplikasi Anda dengan menyalin / menempelkan kode sumber resmi dari tautan yang saya berikan. Saya sudah mencoba ini, dan itu berfungsi dengan baik (tidak ada alasan mengapa tidak seharusnya).

Anda kemudian dapat menambahkannya ke Anda preferences.xml seperti Preferensi lainnya. Contoh:

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

Yang terlihat seperti ini:

screenshot


8
2018-01-04 07:58



Gunakan Intent Preference jika Anda menggunakan layar preferensi xml atau Anda jika Anda menggunakan layar kustom Anda maka kode akan seperti di bawah ini

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

Dan kemudian Buat Kegiatan Kelas agak seperti di bawah ini, Sebagai orang yang berbeda sebagai pendekatan yang berbeda Anda dapat menggunakan pendekatan apa pun yang Anda suka ini hanyalah sebuah contoh.

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

Seperti yang diceritakan sebelumnya ada sejumlah cara melakukan hal ini. ini adalah salah satu cara Anda dapat melakukan tugas Anda, terima jawabannya jika Anda merasa bahwa Anda telah mendapatkan apa yang Anda inginkan.


3
2017-09-12 22:37



Saya telah menjawab pertanyaan serupa di sini dengan contoh bagaimana menggunakan DialogPreference.

membuat DialogPreference dari XML


1
2018-01-11 19:06