我有一个像这样的旋转器:
// Spinner 1
final Spinner plan = (Spinner) dialog.findViewById(R.id.spinner1);
strings = getResources().getStringArray(R.array.paymentplan);
sAdapter = new SpinnerAdapter(this,
android.R.layout.simple_spinner_item, strings);
sAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
plan.setAdapter(sAdapter);
// plan.setAdapter(spinner1Adapter);
plan.setSelection(prefsDisplay.getInt("spinnerSelection1", 0));
plan.setOnItemSelectedListener(new MyOnItemSelectedListenerPlan());
当用户点击时,我希望它保存状态:
public void onClick(View v) {
Editor editor2 = prefsPlan.edit();
int selectedPosition1 = plan.getSelectedItemPosition();
editor2.putInt("spinnerSelection1", selectedPosition1);
editor2.commit();
}
它保存在SharedPref中的位置,但微调器返回默认值。有人在这看到什么吗?
答案 0 :(得分:1)
您正在存储spinnerSelection
editor1.putInt("spinnerSelection", selectedPosition);
访问spinnerSelection1
prefsDisplay.getInt("spinnerSelection1", 0)
使它们保持一致。
<强>更新强>
访问plan.getSelectedItemPosition()
时。然后旋转器可见?我猜不是。
尝试为所选位置设置公共变量。并在selected position
中更新MyOnItemSelectedListenerPlan
。然后将该位置存储在共享首选项中。我想它可以解决你的问题。
答案 1 :(得分:1)
保存:
int selectedPosition = yourSpinner.getSelectedItemPosition()
editor.putInt("spinnerSelection", selectedPosition);
editor.commit();
加载:
yourSpinner.setSelection(prefs.getInt("spinnerSelection",0));
如果您使用的是数组,则应该像这样更改
String selectedString = yourArray[yourSpinner.getSelectedItemPosition()];
editor.putString("spinnerSelection", selectedString);
editor.commit();
检查array [i]与存储在prefs.s中的值。如果你使用的话 相反,通过调用
,可以在没有循环的情况下完成此部分
ArrayList.indexOf(prefs.getString("spinnerSelection", "");
当你提交show所有上面的数组项时都没了。没有人进入 阵列。
答案 2 :(得分:1)
尝试以下代码,首先使用以下代码将当前所选项目的位置保存到onItemSelectedListener()
上的一个整数变量中,然后将此变量值存储到共享首选项中。
将Store值存储到一个变量中。
int index;
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
// Here Position is Item Index
index = position;
}
将商店价值纳入共享偏好。
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putInt("SelectedIndex", index);
prefsEditor.commit();
请参阅以下链接以获取更多信息
答案 3 :(得分:0)
保存到首选项后,您必须将所选项目设置为微调器以供进一步使用
as
int pos = prefsDisplay.getInt("spinnerSelection", "0");
display.setSelection(pos);
但您正在使用spinnerSelection1
。所以默认情况下,如果首选项中没有匹配项。默认值将返回。所以返回 0 并将微调器设置为第一个位置