Проблема, с которой я столкнулся, связана с тем, что в onViewCreated, когда я хотел установить выбранный элемент в счетчике, наблюдатель, настроенный для получения списка названий выходных, который заполняет счетчик значениями, еще не вернулся. Я забыл, что это работает в другой теме в фоновом режиме. В результате на этом этапе счетчик еще пуст. Оператор журнала, приведенный ниже, подтвердил это
Log.i(TAG, "Size of name list is " + holidayNames.size());
. Исправление, с которым я работал, заключалось в следующем: создать новое поле для PlaceInputFragment
private String holidayName;
В onCreateView установите его значение ДО выполнения каких-либо действий для инициализации spinner.
if (getArguments() != null) {
holidayName = getArguments().getString("Holiday");
} else {
holidayName = null;
}
Наконец, в обозревателе для getAllHolidays, ПОСЛЕ строки line adapter.notifyDataSetChanged (); Я поставил следующее:
if (holidayName != null) {
int i = holidayNames.indexOf(holidayName);
spinner.setSelection(i);
}
ДРУГОЙ способ сделать это было бы использовать safeArgs:
Установить holidayName в onViewCreated:
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
if (getArguments() != null) {
PhotoInputFragmentArgs args PhotoInputFragmentArgs.fromBundle(getArguments());
holidayName = photo.getHolidayName();
}
Затем в обозревателе для getAllHolidays, ПОСЛЕ строки line adapter.notifyDataSetChanged (); поставить следующее:
if (holidayName != null) {
int i = holidayNames.indexOf(holidayName);
spinner.setSelection(i);
}