搜索栏在任何地方都可以正常工作,但我希望看到更改发生在首选屏幕中。问题是搜索栏是一个偏好,因此我不能做共享偏好并在onProgressChanged方法中更新它。
这有什么办法吗?
我设置了这样的亮度:
SharedPreferences prefs;
prefs = PreferenceManager.getDefaultSharedPreferences(this);
float sb = prefs.getInt("screenBrightness", 1);
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = sb / 100.0f;
getWindow().setAttributes(lp);
但我不能在onProgressChanged中使用它,因为该类正在扩展Preference。
答案 0 :(得分:3)
您需要做的是使用像OnSharedPreferencesChanged
这样的onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
听众。在您的PreferenceActivity内部执行此操作:
SharedPreferences.OnSharedPreferenceChangeListener prefChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if(key.equals("screenBrightness")) {
//set brightness here
float sb = sharedPreferences.getInt(key, 1);
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = sb / 100.0f;
getWindow().setAttributes(lp);
}
}
};
然后在onSharedPreferenceChanged
中,您可以使用您一直使用的密钥并相应地设置亮度