java如何使用安卓x从SeekBarPreference获取OnPreferenceChanged事件
我一直在尝试制作一个安卓设置屏幕,带有一些SeekBarPreferences,从0到10中选择三个数字。 但是,不会调用我的OnPreferenceChanged代码。 我的设置活动代码:
import 安卓.content.SharedPreferences;
import 安卓.os.Bundle;
import 安卓.widget.Toast;
import 安卓x.appcompat.app.ActionBar;
import 安卓x.appcompat.app.AppCompatActivity;
import 安卓x.preference.Preference;
import 安卓x.preference.PreferenceFragmentCompat;
import 安卓x.preference.SeekBarPreference;
public class AdvancedSettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_activity);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.settings, new AdvancedSettingsFragment())
.commit();
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
}
}
public static class AdvancedSettingsFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.advanced_preferences, rootKey);
final SharedPreferences prefs=getContext().getSharedPreferences("gameSettings",0);
final SharedPreferences.Editor prefsedit=prefs.edit();
SeekBarPreference red=findPreference("redseekbar");
SeekBarPreference green=findPreference("greenseekbar");
SeekBarPreference blue=findPreference("blueseekbar");
red.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
prefsedit.putInt("red",(int)newValue);
prefsedit.apply();
Toast.makeText(getContext(),newValue+"",Toast.LENGTH_LONG);
return true;
}
});
green.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
prefsedit.putInt("green",(int)newValue);
prefsedit.apply();
Toast.makeText(getContext(),newValue+"",Toast.LENGTH_LONG);
return true;
}
});
blue.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
prefsedit.putInt("blue",(int)newValue);
prefsedit.apply();
Toast.makeText(getContext(),newValue+"",Toast.LENGTH_LONG);
return true;
}
});
}
}
}
我的首选布局代码:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:app="http://schemas.安卓.com/apk/res-auto"
xmlns:安卓="http://schemas.安卓.com/apk/res/安卓">
<SeekBarPreference
app:key="redseekbar"
app:title="Red"
app:summary="The red change value"
安卓:max="10"
app:defaultValue="0"
app:showSeekBarValue="true"/>
<SeekBarPreference
app:key="greenseekbar"
app:title="Green"
app:summary="The green change value"
安卓:max="10"
app:defaultValue="0"
app:showSeekBarValue="true"/>
<SeekBarPreference
app:key="blueseekbar"
app:title="Blue"
app:summary="The blue change value"
安卓:max="10"
app:defaultValue="0"
app:showSeekBarValue="true"/>
</PreferenceScreen>
我应该如何从seekbarpreference获得一个onpreferencechanged,就像事件一样? (我正在使用v7支持库,切换/添加新库不是一个选项)
# 1 楼答案
好吧,我不小心忘了打电话。在我的祝酒词上显示()。而且,我没有正确配置它进行测试