首页 > 如何实现点击listpreference 后,弹出一个dialog?

如何实现点击listpreference 后,弹出一个dialog?

protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
    Log.d("`1", "onPrepare DB");
    builder.setSingleChoiceItems(entries(), 0, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            Log.d("`1", "on click");

        }
    });
    super.onPrepareDialogBuilder(builder);
}

这个函数是在一个继承自listpreference的类里,不过当我选择listpreference里的item后,没有Log到任何信息,请问各位如何才能实现选择item后,弹出一个dialog?


android.preference.ListPreference 源码如下:

    @Override
    protected void onPrepareDialogBuilder(Builder builder) {
        super.onPrepareDialogBuilder(builder);

        if (mEntries == null || mEntryValues == null) {
            throw new IllegalStateException(
                    "ListPreference requires an entries array and an entryValues array.");
        }

        mClickedDialogEntryIndex = getValueIndex();
        builder.setSingleChoiceItems(mEntries, mClickedDialogEntryIndex, 
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        mClickedDialogEntryIndex = which;

                        /*
                         * Clicking on an item simulates the positive button
                         * click, and dismisses the dialog.
                         */
                        ListPreference.this.onClick(dialog, DialogInterface.BUTTON_POSITIVE);
                        dialog.dismiss();
                    }
        });

        /*
         * The typical interaction for list-based dialogs is to have
         * click-on-an-item dismiss the dialog instead of the user having to
         * press 'Ok'.
         */
        builder.setPositiveButton(null, null);
    }

你设置的监听器被super.onPrepareDialogBuilder(builder)覆盖了

【热门文章】
【热门文章】