【发布时间】:2015-10-28 18:43:27
【问题描述】:
我的应用程序面临两个问题。
在我的应用程序中,我正在使用包含应用程序简单设置(复选框首选项和列表首选项)的preferenceActivity,我有三个活动 mainActivity、secondActivity 和 settingsActivity,它们是 prefrenceActivity,在 secondActivity 中,我显示了一个表单,让用户从中选择一个值一个微调器视图,我想做的是用户可以从 settingsActivity 中选择该微调器的默认值,这样用户就不必每次都手动选择微调器的值。
现在我的第一个问题是:每当我重新打开我的 settingsActivity(preferenceActivity) 时,listPreference 的摘要会重置为默认值,它仅在 settingsActivity 打开时显示所选值,当我返回 mainActivity 并再次打开 settingsActivity listPreferece 的显示默认值(如果我打开值列表,它会显示最后选中的值)。
第二个问题是:每当我关闭应用程序并再次打开时,首选项值被破坏意味着第二个活动显示用户选择的默认值,而不是显示微调器的第一个值。
这是我的代码
设置活动:
public class settingsActivity extends PreferenceActivity
{ MainActivity mainActivity = new MainActivity();
ListPreference listpref;
@Override
public void onCreate(Bundle savedInstenceState)
{
super.onCreate(savedInstenceState);
addPreferencesFromResource(R.xml.settings);
getActionBar().setDisplayHomeAsUpEnabled(true);
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());
mainActivity.pref_default_currency_index = listpref.findIndexOfValue(value.toString());
return true;
}
});
CharSequence curenttext = listpref.getEntry();
mainActivity.pref_default_currency_index = listpref.findIndexOfValue(curenttext.toString());
}
pref_default_currency_index 是 mainActivity 中声明的静态 int 变量, 当用户单击按钮打开包含微调器的警报对话框时,我会检索此变量以设置 secondActivity 中微调器的值。
请帮助我,提前谢谢。
【问题讨论】:
-
MainActivity mainActivity = new MainActivity();没有。你不能自己创建活动 -
我正在创建我的主要活动的对象,因为变量 pref_default_currency_index 在 MainActivity 中声明,所以我只是创建该活动的对象来访问该变量以存储用户选择的 listPreference 值的索引。跨度>
-
静止。你不能那样做。那是行不通的。 (但是,您提到它是一个静态变量?您的编辑应该对您以这种方式访问静态变量大喊大叫。)
-
那我现在该怎么办?!!有什么建议?如果我删除静态关键字,我的变量在其他活动中再次变为空。
标签: android settings preferenceactivity listpreference