Actualmente estoy trabajando en una actividad de administración de cuentas para mi aplicación de Android y estoy teniendo problemas para averiguar por qué el método setSelection() de una ruleta no activa el OnItemSelectedListener conectado a dicho Spinner .Spinner.setSelection no desencadena correctamente OnItemSelectedListener
Esto es lo que tengo actualmente;
onCreate) método (:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.account_management);
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
retreiveLanguage();
initializeUI();
// Vérification si l'usager est déjà connecté
Globals appState = ((Globals) this.getApplication());
boolean userLoggedIn = appState.isUserLoggedIn();
boolean userInfoAvailable = appState.isUserInfoAvailable();
if (userLoggedIn && userInfoAvailable) {
fillUI();
}
}
líneas pertinentes desde el método initializeUI() que se llama en la creación de la actividad que muestra la unión del hilandero del Oyente:
/** OnItemSelectedHandler for the Country Spinner */
mCountrySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
Log.i(TAG, "onCountrySelected() was called, position : " + pos);
mProvinces = new ArrayList<String>();
mProvincesCode = new ArrayList<String>();
mXML.parseResponse(FileManager.getInstance().getPortalOptions());
for (int i = 0; i < mXML.getCountry(pos).sizeProvinces(); i++){
mProvinces.add(mXML.getCountry(pos).getProvince(i).getLabel(mLanguage));
mProvincesCode.add(mXML.getCountry(pos).getProvince(i).getCode());
}
mProvinceArrayAdapter = new ArrayAdapter<String>(ManageAccountActivity.this,
android.R.layout.simple_spinner_item, mProvinces);
mProvinceArrayAdapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
mProvinceSpinner.setAdapter(mProvinceArrayAdapter);
}
public void onNothingSelected(AdapterView<?> arg0) {
// Do Nothing ...
}
});
Y de nuevo otro par de líneas, esta vez desde el método fillUI():
Log.i(TAG, "Setting country based on user information.");
((Spinner) findViewById(R.id.spin_country))
.setSelection(mCountriesCode.indexOf(mUser.getCountry()));
// TODO : Fix Provinces and States not being changed accordingly
Log.i(TAG, "Setting province based on user information.");
((Spinner) findViewById(R.id.spin_province))
.setSelection(mProvincesCode.indexOf(mUser.getProvince()));
Así que con thi s Esperaría que se llamara OnItemSelectedListener justo después de establecer la selección en el método fillUI(), pero eso no es lo que está sucediendo en tiempo de ejecución: S
Aquí está mi extracto de LogCat que muestra que no se llama al Listener cuando la selección se aplica al girador de país:
I/ManageAccountActivity (28108): país de configuración según la información del usuario.
I/ManageAccountActivity (28108): configuración de provincia según la información del usuario.
I/ManageAccountActivity (28108): onCountrySelected() fue llamado, la posición: 1
Como experimento, también traté de poner la llamada fillUI() en el método onStart de mi actividad, pero que didn' t cambiar cómo reaccionó la aplicación.
¡Gracias de antemano por cualquier consejo, ayuda o consejo!
, OnItemSelectedListener se activa solo cuando se hace alguna acción en la rueda giratoria ... para cambiar –
Bueno, sí lo cambio ... mover la selección de 0 a 1 ¿no se consideraría cambiado? –