Ecco la mia soluzione.
Devo ignorare il primo evento di selezione degli articoli perché esiste una dipendenza tra lo Spinner del percorso e la casella di controllo del percorso.
E tutti i miei controlli sono impostati in base a una precedente visita dell'attività.
// Used to count the number of times the onItemSelected gets fired
private int mGradeSelectionCount = 0;
private void attachHandlers() {
OnItemSelectedListener gradeRangeSelectionMadeListener;
gradeRangeSelectionMadeListener = new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapter, View view, int position, long id) {
// If the counter is 0 then we can assume that it is android firing the event
if (mGradeSelectionCount++ < 1) {
return;
}
if (mCmbGradeFrom.getSelectedItemPosition() == 0) {
// Uncheck the Route checkbox
mChkTypeRoute.setChecked(false);
} else {
// Check the Route checkbox
mChkTypeRoute.setChecked(true);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// Dont care, keep the same values as before
}
};
mCmbGradeFrom.setOnItemSelectedListener(gradeRangeSelectionMadeListener);
mChkTypeRoute.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (!isChecked) {
mCmbGradeFrom.setSelection(0);
mCmbGradeTo.setSelection(0);
}
}
});
}
Ho un altro problema con l'ascoltatore. se sparo un'attività asincrona dal metodo OnItemSelected, quindi ruoto il retun getLastNonConfigurationInstance null per l'attività che ho salvato su onRetainNonConfigurationInstance. Ma se metto il codice all'esterno nel file oncreate funzionerà bene ... – Maxrunner
non hai detto che ci stai indicando 2 anche la tua risposta. – cosmincalistru
@cosmincalistru: risolto il collegamento - Ho appena copiato quello che era nel mio URL del browser in quel momento, non ho capito che era una risposta al posto della domanda. Forse, col tempo, verrò a perdonare me stesso. –