多个 onPreferenceChangeListeners in 1 Activity
Multiple onPreferenceChangeListeners in 1 Activity
如何在 SettingsFragment Activity 中使用多个 onPrefernceChangeListeners?我已经有以下代码:
import android.os.Bundle;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
public class SettingsFragment extends
PreferenceFragmentCompat implements
Preference.OnPreferenceChangeListener {
@Override
public void onCreatePreferences(Bundle bundle, String s) {
addPreferencesFromResource(R.xml.preferences);
Preference currency_list = findPreference("currency_list");
currency_list.setOnPreferenceChangeListener(this);
Preference switch_box_show_idle_dialog = findPreference("switch_show_idle_dialog");
switch_box_show_idle_dialog.setOnPreferenceChangeListener(this);
}
@Override
public boolean onPreferenceChange(Preference currency_list, Object newValue){
String currency_list_Key = currency_list.getKey();
boolean currency_list_Value = (boolean) newValue;
if(currency_list_Key.equals("currency_list")){
//onChangeListener here
}
return true;
}
@Override
public boolean onPreferenceChange(Preference switch_show_idle_dialog, Object newValue) {
String switch_preferenceKey = switch_show_idle_dialog.getKey();
boolean switch_show_idle_dialog_Value = (boolean) newValue;
if(switch_preferenceKey.equals("switch_show_idle_dialog")){
//onChangeListener here
}
return true;
}
}
Android 工作室标记
public boolean onPreferenceChange(Preference switch_show_idle_dialog, Object newValue)
两个听众的部分都是红色。是否有可能让两个听众都活跃?如果是怎么办?
您不能在同一个class中重写一个方法两次,当偏好改变时,onPreferenceChange()
方法将被调用,现在您可以使用此方法中的 Preference
参数来检查更改了哪个首选项,因此您可以这样做:
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference.getKey().equals("switch_show_idle_dialog")) {
//your code
return true;
} else if (preference.getKey().equals("currency_list")) {
//your code
return true;
} else
return false;
}
如何在 SettingsFragment Activity 中使用多个 onPrefernceChangeListeners?我已经有以下代码:
import android.os.Bundle;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
public class SettingsFragment extends
PreferenceFragmentCompat implements
Preference.OnPreferenceChangeListener {
@Override
public void onCreatePreferences(Bundle bundle, String s) {
addPreferencesFromResource(R.xml.preferences);
Preference currency_list = findPreference("currency_list");
currency_list.setOnPreferenceChangeListener(this);
Preference switch_box_show_idle_dialog = findPreference("switch_show_idle_dialog");
switch_box_show_idle_dialog.setOnPreferenceChangeListener(this);
}
@Override
public boolean onPreferenceChange(Preference currency_list, Object newValue){
String currency_list_Key = currency_list.getKey();
boolean currency_list_Value = (boolean) newValue;
if(currency_list_Key.equals("currency_list")){
//onChangeListener here
}
return true;
}
@Override
public boolean onPreferenceChange(Preference switch_show_idle_dialog, Object newValue) {
String switch_preferenceKey = switch_show_idle_dialog.getKey();
boolean switch_show_idle_dialog_Value = (boolean) newValue;
if(switch_preferenceKey.equals("switch_show_idle_dialog")){
//onChangeListener here
}
return true;
}
}
Android 工作室标记
public boolean onPreferenceChange(Preference switch_show_idle_dialog, Object newValue)
两个听众的部分都是红色。是否有可能让两个听众都活跃?如果是怎么办?
您不能在同一个class中重写一个方法两次,当偏好改变时,onPreferenceChange()
方法将被调用,现在您可以使用此方法中的 Preference
参数来检查更改了哪个首选项,因此您可以这样做:
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference.getKey().equals("switch_show_idle_dialog")) {
//your code
return true;
} else if (preference.getKey().equals("currency_list")) {
//your code
return true;
} else
return false;
}