Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android PreferenceActivity listpreference值在重新加载时重置为默认值_Android_Settings_Preferenceactivity_Listpreference - Fatal编程技术网

Android PreferenceActivity listpreference值在重新加载时重置为默认值

Android PreferenceActivity listpreference值在重新加载时重置为默认值,android,settings,preferenceactivity,listpreference,Android,Settings,Preferenceactivity,Listpreference,我在我的应用程序中面临两个问题 在我的应用程序中,我使用的preferenceActivity包含应用程序的简单设置(checkboxpreference和listpreference),我有三个活动mainActivity、secondActivity和settingsActivity,即preferenceActivity,在secondActivity中,我显示一个表单,允许用户从微调器视图中选择值,我想做的是,用户可以从settingsActivity中选择该微调器的默认值,这样用户就不

我在我的应用程序中面临两个问题

在我的应用程序中,我使用的preferenceActivity包含应用程序的简单设置(checkboxpreference和listpreference),我有三个活动mainActivity、secondActivity和settingsActivity,即preferenceActivity,在secondActivity中,我显示一个表单,允许用户从微调器视图中选择值,我想做的是,用户可以从settingsActivity中选择该微调器的默认值,这样用户就不必每次都手动选择微调器的值

现在我的第一个问题是:每当我重新打开settingsActivity(preferenceActivity)时,listPreference的Summy将重置为默认值,它仅在settingsActivity打开时显示选定值,当我返回mainActivity并再次打开settingsActivity时,listPreference的Summy将显示默认值(如果我打开值列表,它将显示上次选中的值)

第二个问题是:每当我关闭应用程序并再次打开时,首选项值就会被破坏,这意味着secondActivity dosent会显示用户选择的默认值,而不是显示spinner的第一个值

这是我的密码

设置活动性:

public class settingsActivity extends PreferenceActivity 
{ MainActivity MainActivity=新的MainActivity()

pref_default_currency_index是在mainActivity中声明的静态int变量, 当用户单击按钮打开包含微调器的alertdialoug时,我检索此变量以设置secondActivity中微调器的值


请帮帮我,提前谢谢。

我两个问题都有了解决办法。我把它弄得太难了,而它却很容易

我的第一个问题是从PreferenceActivity获取从listPreference中选择的选项user,我意识到PreferenceActivity会自动将信息保存到SharedPreferences,所以我要做的就是在onCreate()方法中检索该信息,并将其保存在局部变量中

SharedPreferences sharedPrefs= PreferenceManager.getDefaultSharedPreferences(this);

pref_default_currency_index = Integer.parseInt(sharedPrefs.getString("prefDefaultCurrency","0"));
第二个问题是,每当我打开设置活动(preferenceActivity)时,listPreference的Summary没有显示上次选择的值,要解决这个问题,我只需在setOnPreferenceChangeListener()方法中设置listPreference的Summary


就是这样,很简单!

MainActivity MainActivity=newmainActivity()
否。您不能自己创建活动我正在创建我的主要活动的对象,因为变量pref_default_currency_index是在MainActivity中声明的,所以我只是创建该活动的对象来访问该变量,以存储用户选择的listPreference值的索引。仍然。您不能这样做。这不起作用。(然而,您提到它是一个静态变量?您的编辑器应该因为您以这种方式访问静态变量而对您大喊大叫。)那么我现在该怎么办?!!有什么建议吗?如果我删除static关键字,我的变量在其他活动中会再次变为null。
SharedPreferences sharedPrefs= PreferenceManager.getDefaultSharedPreferences(this);

pref_default_currency_index = Integer.parseInt(sharedPrefs.getString("prefDefaultCurrency","0"));
listpref = (ListPreference)findPreference("prefDefaultCurrency");
    listpref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() 
    {           
        @Override
        public boolean onPreferenceChange(Preference preference, Object value) {
            // TODO Auto-generated method stub
            listpref.setSummary(value.toString());
            return true;
        }
    });