У меня есть простое приложение, в котором пользователь выбирает один из штатов США, а выбранный штат должен использоваться для составления списка всех округов в этом штате.В onCreate я построил адаптер массива с именем Stateadapter и установил для него объект spinner «spinState».Затем я инициализировал класс слушателя StateOnItemSelectedListener.Помимо onCreate, у меня есть класс StateOnItemSelectedListener, который будет читать, какое состояние было выбрано в счетчике, а затем выполнять остальные задачи приложения.
У меня есть две проблемы: когда один шаг проходит через код в режиме отладки«parent.getItemAtPosition (pos) .toString» не возвращает строковое значение выбранного состояния (хотя многочисленные примеры в Интернете показывают, что это должно работать).
Во-вторых, при запуске приложение запускает прослушиватель, когдапроисходит через «Создать», и все выглядит хорошо, пока пользователь не выберет вращающийся элемент в пользовательском интерфейсе, а затем приложение не выполнит принудительное закрытие.
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
spinState = (Spinner)this.findViewById(R.id.spinState);
ArrayAdapter<String> Stateadapter = new ArrayAdapter<String> (this,android.R.layout.simple_spinner_item, array_spinState);
Stateadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinState.setAdapter(Stateadapter);
spinState.setOnItemSelectedListener(new StateOnItemSelectedListener());
}
public class StateOnItemSelectedListener implements OnItemSelectedListener
{
public void onItemSelected(AdapterView<?> parent, View itemSelected, int pos, long id)
{ State = spinState.getItemAtPosition(pos).toString();
//Do Stuff base on State;
}
public void onNothingSelected(AdapterView<?> parent)
{ //Do nothing here
}
}