0

您可能认为这是一个重复的问题,但我查找了几乎所有现有的答案,但我仍然没有得到正确的答案。这是我的问题:

  1. YesNoDialogPreference我想通过扩展DialogPreference类来创建默认值
  2. YesNoDialogPreference在 prefs.xml 中使用创建首选项
  3. 在 MainActivity 我想为是和否选项设置一个 onClickListener

我试过这样做,AlertDialog.Builder但它没有用,我也尝试过使用com.android.internal.preference.YesNoPreference,它确实工作导致 R.attr 错误有人可以给我一个完整的答案......请!!,我一直在努力这几个星期了。

这是我的代码:YesNoDialogPreference.java

import android.content.Context;
import android.preference.DialogPreference;
import android.util.AttributeSet;

public class YesNoDialogPreference extends DialogPreference {

    public YesNoDialogPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDialogClosed(boolean positiveResult) {
        super.onDialogClosed(positiveResult);
        persistBoolean(positiveResult);
    }

}

来自 prefs.xml 的偏好

<com.me.myapp.YesNoDialogPreference
            android:key="KEY"
            android:dialogMessage="You sure ?"
            android:title="Do something"
            android:summary="will do something"
            />

我不知道如何在 MainActivity 中链接它们。

4

2 回答 2

1

你试图达到的目标是没有意义的。MainActivity 未激活,因此不能成为对话框的目标。您需要在 YesNoDialogPreference 中有一个 onClick 处理程序,然后它会执行您想要的操作。您通常会在设置中保护该值并在所有其他地方读取该值 - 例如您的 MainActivity。这是一个代码示例: 如何让 DialogPreference POSITIVE_BUTTON 在 OnClick 上工作?

于 2014-10-21T13:04:43.743 回答
0

只需使用 onClick 方法并实现侦听器即可在您想要的地方提供处理操作

@Override
public void onClick(DialogInterface dialog, int which){

    if(which == DialogInterface.BUTTON_POSITIVE) {
        // do your stuff to handle positive button

    }else if(which == DialogInterface.BUTTON_NEGATIVE){
        // do your stuff to handle negative button
    }
 }
于 2014-10-21T13:11:53.507 回答