Теперь я знаю, что добавление слушателей, а затем установка полей вызовет изменение. Поэтому я устанавливаю свои поля, а затем добавляю слушателей.
Я даже добавил логическое значение, когда оно срабатывало, чтобы избежать этого. Однако после OnResume. Все мои слушатели горят. Может кто-нибудь объяснить, почему и как это остановить. Спасибо.
Вот мой код/рабочий поток:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
spn1.setSelection(2);
spn2.setSelection(15); // Gets replaced by the listener to 2, when it shouldnt!
UseListeners = false; // Ignores fired events with an IF statement.
addListeners();
//UseListeners = true;
}
@Override
protected void onResume() {
super.onResume();
UseListeners = true;
}
private void addListeners() {
spn1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
try{
if(UseListeners){
spn2.setSelection(spn1.getSelectedItemPosition());
}
} catch (Exception e)
{
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
Конечно, после OnResume ничего даже не меняется, поэтому он не должен срабатывать. В резюме буквально просто устанавливается значение true для логического значения. И это последнее состояние перед запуском приложения, поэтому я не уверен, где и почему оно срабатывает. Его Super вызывается до того, как ему также разрешено использовать триггеры.
onResume();
в какой-то момент во время инициализации активности - person IAmGroot   schedule 03.07.2012UseListeners = true;
? Неа. Я вижу нужные значения в своих полях. (Прослушиватель срабатывает, но ему не предоставляется разрешение на запуск/изменение чего-либо) - person IAmGroot   schedule 03.07.2012onCreate()
. Я переопределяю метод, чтобы убедиться, что ничего не происходит вsuper.onResume()
или между этим иonCreate()
- person IAmGroot   schedule 03.07.2012