ListPreference不正确保存

过去几天我一直在试图让我的应用程序都无济于事listpreference工作。 我看过无数的线程,但仍然一无所获。

你要知道我仍然在学习的过程中,很明显,所以我的知识是相当有限的,至少可以这样说。

我试图做一个程序,允许用户轻松地改变一些系统参数的ROM中。

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看起来是这样的:

<?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>

而我的阵列看起来像这样:

<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配置项命中得到更新。

这里是一个小截图这样你就可以更好地理解。 ListPreference不正确保存

(不能张贴图片还)

非常感谢您的时间。

--------------解决方案-------------

最终修复它自己。 我的偏好设定类和sharedpreference经理呼叫者中相同的首选项类正在使用,所以该实例已经重新开始后,这是得到保存。

添加

里面onSharedPreferenceChanged getPrefs固定它。

分类:安卓 时间:2015-03-15 人气:2
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.333 (s). 10 q(s)