0

我有一个这样的微调器:

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

4 回答 4

1

你正在存储spinnerSelection

editor1.putInt("spinnerSelection", selectedPosition);

访问spinnerSelection1

prefsDisplay.getInt("spinnerSelection1", 0)

使它们一致。

更新

当您访问plan.getSelectedItemPosition(). 那么微调器是可见的?我觉得不是。

尝试为所选位置放置一个公共变量。并selected position在您的MyOnItemSelectedListenerPlan. 然后将该位置存储在共享偏好中。我想它可以解决你的问题。

于 2012-12-06T03:50:12.420 回答
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();

根据存储在 prefs 中的值检查 array[i]。如果您使用 ArrayList 而不是这部分可以通过调用在没有循环的情况下完成

ArrayList.indexOf(prefs.getString("spinnerSelection", "");

当您提交时,显示所有上述数组项都消失了。显示没有人进入数组。

于 2012-12-06T04:11:07.177 回答
1

尝试下面的代码,并首先使用下面的代码将当前选定项目的位置保存到一个整数变量onItemSelectedListener()中,然后将此变量值存储到共享首选项中。

用于将值存储到一个变量中。

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 微调器

Android 共享首选项

于 2012-12-06T05:32:39.673 回答
0

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

作为

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

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

于 2012-12-06T03:52:07.153 回答