为什么在onSharedPreferenceChanged自定义监听器DialogPreferenc

2019-08-04 00:49发布

我努力使对话偏好的偏好,其中用户只需点击肯定按钮来触发某些动作。 (清除数据库中没有|吗?)

public class MyDialogPreference extends DialogPreference {

    public MyDialogPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onDialogClosed(boolean positiveResult) {
        super.onDialogClosed(positiveResult);
        Log.d(MainActivity.TAG, "# onDialogClosed: " + positiveResult);
    }

}

我不居然要坚持什么,只是触发onSharedPreferenceChanged监听器,这样我就可以在活动中处理它。 但我无法弄清楚如何触发它

//解

@Override
protected void onDialogClosed(boolean positiveResult) {
    super.onDialogClosed(positiveResult);
    if(positiveResult) {
        persistBoolean(!getPersistedBoolean(true));
    }
    Log.d(MainActivity.TAG, "# onDialogClosed: " + positiveResult);
}

Answer 1:

onSharedPreferenceChanged被称为由于对注册的内置回调sharedpreference ,所以除非你改变与dialogPreference你不会得到相关的关键onSharedPreferenceChanged回调。

所以你可以做的是,每次关闭对话框,你可以在关键的改变值。 喜欢的东西下面

text = getPersistedString("1")
if(text.length() > 10)
   text = "1";
persistString(text+"1");

确保您的dialogPreference有一个键和android:持续在XML真



文章来源: Why custom DialogPreference doesnt trigger on onSharedPreferenceChanged listener?