我正在尝试在首选项中设置对话框首选项,用户只需单击“正向”按钮即可触发某些操作。 (清除数据库?否|是)
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);
}
答案 0 :(得分:5)
onSharedPreferenceChanged
上注册了内置回调,因此调用 sharedpreference
,因此除非您更改与dialogPreference关联的密钥,否则您将无法获得onSharedPreferenceChanged
回调。
所以你可以做的是每次关闭对话框,你可以改变key中的值。像下面的东西
text = getPersistedString("1")
if(text.length() > 10)
text = "1";
persistString(text+"1");
确保你的dialogPreference有一个键和android:在xml中持久化为true