共享偏好&旋转器不维持状态

时间:2012-12-06 03:45:51

标签: android sharedpreferences android-spinner

我有一个像这样的旋转器:

// 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中的位置,但微调器返回默认值。有人在这看到什么吗?

4 个答案:

答案 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();

请参阅以下链接以获取更多信息

Android Spinners

Android Shared Preferences

答案 3 :(得分:0)

保存到首选项后,您必须将所选项目设置为微调器以供进一步使用

as

int pos = prefsDisplay.getInt("spinnerSelection", "0");
display.setSelection(pos);

但您正在使用spinnerSelection1。所以默认情况下,如果首选项中没有匹配项。默认值将返回。所以返回 0 并将微调器设置为第一个位置