一、DialogPreference点击可以出对话框
(包含EditTextPreference 、ListPreference 、MultiCheckPreference 、MultiSelectListPreference 、SeekBarDialogPreference 、VolumePreference和YesNoPreference这些子类)
public abstract class DialogPreference extends Preference implements
DialogInterface.OnClickListener, DialogInterface.OnDismissListener,
PreferenceManager.OnActivityDestroyListener {
@Override
protected void onClick() {
if (mDialog != null && mDialog.isShowing()) return;
showDialog(null);
}
}
onclick时,showDialog能出对话框,并且可以在preference.xml中设置对话框的属性,如:
<ListPreference android:key="depart_value" android:title="部门设置" android:dialogTitle="选择部门"
android:entries="@array/department" android:entryValues="@array/department_value"/>
点击“部门设置”,就会弹出 标题为“选择部门”,内容为department的对话框
二、PreferenceScreen 点击可以出对话框,查证过程同上
三、PreferenceCategory 用途是为了使用一个标题将每个PreferenceScreen分开,里面包含DialogPreference等,所以本身没有onclick方法
四、TwoStatePreference点击不能出对话框
(包含CheckBoxPreference和SwitchPreference两个子类)
public abstract class TwoStatePreference extends Preference {
@Override
protected void onClick() {
super.onClick();
final boolean newValue = !isChecked();
if (callChangeListener(newValue)) {
setChecked(newValue);
}
}
}
onclick时,会更改选择的状态,但不能出对话框