我有一个旋转器的视图。该活动通过一个弹出窗口开始另一个活动,我在其中添加或删除父级在微调器中显示的值。
因此,在onActivityResult()中,我通过调用我的FillSpinner()方法刷新微调器的内容,以便它反映任何附加的或删除的值。
此方法的参数是以前选择的值:
private void fillSpinner(String value){
Cursor c = mDbHelper.getAllCategories();
startManagingCursor(c);
c.moveToFirst();
String[] from = new String[]{DBAdapter.KEY_CATEGORY};
SimpleCursorAdapter scCats = new SimpleCursorAdapter(
this, android.R.layout.simple_spinner_item,c,from,
new int[]{android.R.id.text1});
scCats.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
category.setAdapter(scCats);
if (value != null && value != "") {
category.setSelection((int)mDbHelper.categoryIndex(value));
}
}
当我打开微调器时,它包含正确的列表(即刷新列表),并选择正确的值。但是,微调器控件本身(处于关闭状态)不显示选定的值,而是显示列表中的第一个值。
当我单步执行调试器中的代码时,spinner值在我调用setselection()之前和之后都是正确的(并且总是使用相同的正确ID调用它)。但是,由于我无法退出事件,因此当我在短时间后恢复执行时,微调器中的值会发生更改。
换句话说,当我从弹出式活动返回时,微调器显示的字符串将发生更改,并且与所选项目不同。
任何想法都会受到赞赏。