我有一个微调视图。该活动通过弹出式窗口添加或删除父项在Spinner中显示的值来启动另一个活动。 因此,在onActivityResult()中,我通过调用我的fillSpinner()方法来刷新Spinner的内容,以便它反映任何其他或已删除的值。 该方法的参数是预先选择的值:刷新微调器
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));
}
}
当我打开微调,它包含正确的列表(即,它被刷新),并且选择正确的值。但是,微调控制器本身(处于关闭状态)不显示选定的值,而是显示列表中的第一个值。
当我调试调试器中的代码时,在我调用setSelection()(并且始终使用相同的正确ID)调用之前和之后,Spinner值是正确的。但是,由于我无法退出该事件,因此在短时间后恢复执行时,Spinner中的值会发生变化。
换句话说,当我从弹出式活动返回时,微调控件的显示字符串发生了变化,与选定的项目不同。
任何想法表示赞赏。
谢谢!为我工作。 – Yellos 2012-08-28 13:55:13