首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListPreference没有正确地保存

ListPreference没有正确地保存
EN

Stack Overflow用户
提问于 2011-12-27 16:18:23
回答 1查看 1.8K关注 0票数 0

在过去的几天里,我一直试图在我的应用程序中使列表优先工作,但没有结果。我读过无数的线索,但还是什么也没读。

请注意,我还在学习过程中,显然,所以我的知识是相当有限的,至少可以说。

我正在尝试做一个程序,让用户可以轻松地改变一些系统参数的ROM。

代码语言:javascript
复制
public class MyPersArray extends PreferenceActivity implements OnSharedPreferenceChangeListener {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.pers);
            getPrefs();

[....]

public String ListPreference; 

    private void getPrefs() {  
        // Get the xml/preferences.xml preferences  
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
        // register preference change listener
        prefs.registerOnSharedPreferenceChangeListener(this);
        ListPreference = prefs.getString("gpsPref", "0");
    }  


    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {      
        if(Integer.valueOf(ListPreference) == 0) {
            ListPreference = prefs.getString("gpsPref", "0");
            Commands.doGps0();
            Toast.makeText(getApplicationContext(), "0",Toast.LENGTH_SHORT).show();
        } else if(Integer.valueOf(ListPreference) == 1) {
            ListPreference = prefs.getString("gpsPref", "1");
            Commands.doGps1();
            Toast.makeText(getApplicationContext(), "1",Toast.LENGTH_SHORT).show();
        } else if(Integer.valueOf(ListPreference) == 2) {
            ListPreference = prefs.getString("gpsPref", "2");
            Commands.doGps2();
            Toast.makeText(getApplicationContext(), "2",Toast.LENGTH_SHORT).show();
        } else if(Integer.valueOf(ListPreference) == 3) {
            ListPreference = prefs.getString("gpsPref", "3");
            Commands.doGps3();
            Toast.makeText(getApplicationContext(), "3",Toast.LENGTH_SHORT).show();
        } else if(Integer.valueOf(ListPreference) == 4) {
            ListPreference = prefs.getString("gpsPref", "4");
            Commands.doGps4();
            Toast.makeText(getApplicationContext(), "4",Toast.LENGTH_SHORT).show();
        } else if(Integer.valueOf(ListPreference) == 5) {
            ListPreference = prefs.getString("gpsPref", "5");
            Toast.makeText(getApplicationContext(), "5",Toast.LENGTH_SHORT).show();
            Commands.doGps5();
        }
    }

这是我为首选项使用的代码。

我的xml如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <ListPreference
        android:defaultValue="0"
        android:dialogTitle="Pick your Region"
        android:enabled="true"
        android:entries="@array/gps_entries"
        android:entryValues="@array/gps_values"
        android:key="gpsPref"
        android:negativeButtonText="Cancel"
        android:summary="Enhance GPS signal and speed"
        android:title="GPS Preference" >
    </ListPreference>
</PreferenceScreen>

我的数组看起来是这样的:

代码语言:javascript
复制
<string-array name="gps_values">
    <item>0</item>
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
    <item>5</item>
</string-array>
<string-array name="gps_entries">
    <item>Europe</item>
    <item>Africa</item>
    <item>Asia</item>
    <item>Australia</item>
    <item>North America</item>
    <item>South America</item>
</string-array>

首选项代码和getPrefs代码包含在同一个java文件中。这是我找到“起作用”的唯一方法。

的问题是,使用这段代码时,ListPreference没有得到正确的更新,并且命令没有在单击ListPreference时执行。只有当我再次点击GPS配置项时,它才会更新。

这里有一个小截图,这样你就能更好地理解。http://i42.tinypic.com/t7bebq.png (还不能发布图片)

非常感谢你抽出时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-05 10:45:18

最后我自己修好了。我的prefs类和shared首选项管理器调用者都在同一个prefs类中使用,因此在重新启动实例之后保存它。

添加

getPrefs it修复了它。

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

https://stackoverflow.com/questions/8646774

复制
相关文章

相似问题

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