Android-多个 CheckBoxPreference 的一个点击监听器
Android-One clicklistener for many CheckBoxPreference
我有一些 CheckBoxPreference 元素,我想为其页面中的所有 CheckBoxPreference 使用一个 onClickListener。这是我正在尝试做的事情:
CheckBoxPreference checkboxPref = (CheckBoxPreference)getPreferenceManager().findPreference("preference1");
CheckBoxPreference checkboxPref1 = (CheckBoxPreference)getPreferenceManager().findPreference("preference2");
checkboxPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
CheckBoxPreference pref = (CheckBoxPreference) findPreference("preference1");
if (pref.isChecked())
{
pref.setChecked(false);
dialog.show();
}else if (!pref.isChecked())
{
pref.setChecked(true);
dialog.show();
}
return false;
}
});
}
如何为 checkboxPref1 执行此 onPreferenceClick()?
有任何想法吗?谢谢!
OnePreferenceClickListener listener = new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
CheckBoxPreference pref = (CheckBoxPreference) findPreference("preference1");
pref.setChecked(!pref.isChecked());
dialog.show();
return false;
}
});
checkboxPref.setOnPreferenceClickListener(listener);
checkboxPref1.setOnPreferenceClickListener(listener);
或者,您可以让 class 实现接口,然后将其传递给两个复选框首选项。
要添加到 Bens Answer,最好将监听器创建为 private final
(如果需要在其他地方访问,则创建 public final
),因为它不会更改:
private final OnePreferenceClickListener listener = new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
CheckBoxPreference pref = (CheckBoxPreference) findPreference("preference1");
if (pref.isChecked()) {
pref.setChecked(false);
dialog.show();
}else if (!pref.isChecked()){
pref.setChecked(true);
dialog.show();
}
return false;
}
});
如果 Class 本身非常简单,那么您可以将 implements Preference.OnPreferenceClickListener
添加到您的 class 中,这将强制您添加 Override:
@Override
public boolean onPreferenceClick(Preference preference) {
CheckBoxPreference pref = (CheckBoxPreference) findPreference("preference1");
if (pref.isChecked()) {
pref.setChecked(false);
dialog.show();
}else if (!pref.isChecked()){
pref.setChecked(true);
dialog.show();
}
return false;
}
@Override
public boolean onPreferenceClick(Preference preference) {
// TODO Auto-generated method stub
CheckBoxPreference pref = (CheckBoxPreference) findPreference("preference1");
if (pref.isChecked())
{
pref.setChecked(true);
}else if (!pref.isChecked())
{
pref.setChecked(false);
}
return pref.isChecked();
}
我有一些 CheckBoxPreference 元素,我想为其页面中的所有 CheckBoxPreference 使用一个 onClickListener。这是我正在尝试做的事情:
CheckBoxPreference checkboxPref = (CheckBoxPreference)getPreferenceManager().findPreference("preference1");
CheckBoxPreference checkboxPref1 = (CheckBoxPreference)getPreferenceManager().findPreference("preference2");
checkboxPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
CheckBoxPreference pref = (CheckBoxPreference) findPreference("preference1");
if (pref.isChecked())
{
pref.setChecked(false);
dialog.show();
}else if (!pref.isChecked())
{
pref.setChecked(true);
dialog.show();
}
return false;
}
});
}
如何为 checkboxPref1 执行此 onPreferenceClick()? 有任何想法吗?谢谢!
OnePreferenceClickListener listener = new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
CheckBoxPreference pref = (CheckBoxPreference) findPreference("preference1");
pref.setChecked(!pref.isChecked());
dialog.show();
return false;
}
});
checkboxPref.setOnPreferenceClickListener(listener);
checkboxPref1.setOnPreferenceClickListener(listener);
或者,您可以让 class 实现接口,然后将其传递给两个复选框首选项。
要添加到 Bens Answer,最好将监听器创建为 private final
(如果需要在其他地方访问,则创建 public final
),因为它不会更改:
private final OnePreferenceClickListener listener = new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
CheckBoxPreference pref = (CheckBoxPreference) findPreference("preference1");
if (pref.isChecked()) {
pref.setChecked(false);
dialog.show();
}else if (!pref.isChecked()){
pref.setChecked(true);
dialog.show();
}
return false;
}
});
如果 Class 本身非常简单,那么您可以将 implements Preference.OnPreferenceClickListener
添加到您的 class 中,这将强制您添加 Override:
@Override
public boolean onPreferenceClick(Preference preference) {
CheckBoxPreference pref = (CheckBoxPreference) findPreference("preference1");
if (pref.isChecked()) {
pref.setChecked(false);
dialog.show();
}else if (!pref.isChecked()){
pref.setChecked(true);
dialog.show();
}
return false;
}
@Override
public boolean onPreferenceClick(Preference preference) {
// TODO Auto-generated method stub
CheckBoxPreference pref = (CheckBoxPreference) findPreference("preference1");
if (pref.isChecked())
{
pref.setChecked(true);
}else if (!pref.isChecked())
{
pref.setChecked(false);
}
return pref.isChecked();
}