У меня есть вид со счетчиком. Действие запускает еще одну акцию с всплывающего окна, в котором я добавляю или удаляю значения, которые родитель отображает в Spinner.
Итак, в onActivityResult () я обновляю содержимое Spinner, чтобы оно отражало любые дополнительные или удаленные значения, вызывая мой метод 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, он содержит правильный список (то есть он был обновлен) и выбрано правильное значение. Однако сам элемент управления Spinner (в закрытом состоянии) показывает не выбранное значение, а первое в списке.
Когда я выполняю код в отладчике, значение Spinner является правильным до и после того, как я вызываю setSelection () (и всегда вызывается с одинаковым правильным идентификатором). Однако, поскольку я не могу выйти из события, когда я возобновляю выполнение через короткий промежуток времени, значение в Spinner изменяется.
Другими словами, отображаемая строка счетчика изменяется и отличается от выбранного элемента, когда я возвращаюсь из всплывающей активности.
Любые идеи приветствуются.