首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwitchPreference图形不变

SwitchPreference图形不变
EN

Stack Overflow用户
提问于 2018-06-04 21:29:51
回答 1查看 34关注 0票数 1
代码语言:javascript
复制
SwitchPreference switchPreference = new SwitchPreference(preferenceScreen.getContext());
switchPreference.setKey(sensor.getName());
switchPreference.setTitle(sensor.getName());
switchPreference.setChecked(true);

如果我检查开关的状态

代码语言:javascript
复制
switchPreference.isChecked()

它将正确的布尔值返回为true。但是,开关的图形始终处于上一次运行时设置的状态。

开关是在onCreate()中动态创建的。

代码语言:javascript
复制
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences); //almost empty
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
    prefs.registerOnSharedPreferenceChangeListener(this);
    PreferenceScreen preferenceScreen = this.getPreferenceScreen();
    PreferenceCategory preferenceCategory = new PreferenceCategory(preferenceScreen.getContext());
    preferenceCategory.setTitle("Sensor List");
    preferenceScreen.addPreference(preferenceCategory);

    for (TrackingData sensor : SensorService.data)
    {
        SwitchPreference switchPreference = new SwitchPreference(preferenceScreen.getContext());
        switchPreference.setKey(sensor.getName());
        switchPreference.setTitle(sensor.getName());
        switchPreference.setChecked(true);
        Log.d(TAG_SENSOR,switchPreference.getKey() + "'s status is " + switchPreference.isChecked());
        preferenceCategory.addPreference(switchPreference);
    }
}


public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{


    SwitchPreference preference = (SwitchPreference) findPreference(key);
    boolean value = preference.isChecked();
    if (value)
    {
        //start tracking this sensor
        Log.d(TAG_SENSOR, key + " tracking enabled");
    }
    else
    {
        //stop tracking this sensor
        Log.d(TAG_SENSOR, key + "tracking disabled");
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 14:53:38

经过一些修改后,我发现修复方法是将SwitchPreference的持久值设置为false

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50689048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档