versiones sandwich jelly honeycomb gingerbread descargar cream caracteristicas bean android android-3.0-honeycomb

android - sandwich - ActionBar Dropdown Spinner es el primer elemento predeterminado



ice cream sandwich android (2)

¿Ha intentado usar las preferencias compartidas para guardar el valor del selector seleccionado? Utilicé este código para guardar la selección de los usuarios con preferencias compartidas, de modo que la próxima vez que abrieran la aplicación, el control de giro se configuró con el último valor que eligieron:

Spinner Spinner = (Spinner) findViewById(R.id.Spinner); String[] spinnervalues = getSpinnervalues(); ArrayAdapter<CharSequence> spinnerAdapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, makes); spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Spinner.setAdapter(spinnerAdapter); int position = Utils.getIndex(getSpinnerval(), makes); Spinner.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { String selected = (String) parentView.getSelectedItem(); Spinner Spinner = (Spinner) findViewById(R.id.Spinner); String[] spinnervalues = Filter.this.getSpinnerval(selected); ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(Filter.this, android.R.layout.simple_spinner_item, models); spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Spinner.setAdapter(adapter); } public void onNothingSelected(AdapterView<?> parentView) {} }); Spinner.setSelection(makeposition, true); int position = Utils.getIndex(getSpinnerval()); if (position >= 0) { Spinner Spinner = (Spinner) findViewById(R.id.Spinner); Spinner.setSelection(position, true); }

Luego el get Util:

public String getSpinnerval() { return getSharedPreferences().getString("val", ""); }

Alteré un poco el código para que no sea correcto al 100%, pero podría darte una idea.

Estoy intentando establecer el índice del elemento que se debe seleccionar en el control de giro de forma predeterminada, pero siempre el valor predeterminado es 0 (primer elemento)

actionBar.setDisplayShowTitleEnabled(false); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); SpinnerAdapter spinnerAdapter = new ArrayAdapter<String>(activity, android.R.layout.simple_spinner_dropdown_item, names); int selectedIndex = actionBar.getSelectedNavigationIndex(); if (selectedIndex != targetIndex) { actionBar.setSelectedNavigationItem(targetIndex); }

Arriba si el bloque se llama siempre. Incluso después de configurar el índice 2, la próxima vez que lo compruebe, devuelve 0.

Edición: sospecho que getSelectedNavigationIndex proporciona el índice del elemento de la barra de acción en lugar del elemento desplegable de Spinner. Si ese es el caso, ¿qué método establece el índice del elemento seleccionado dentro de la lista desplegable?


Asegúrese de llamar setListNavigationCallbacks método setListNavigationCallbacks antes de cambiar el elemento seleccionado. No puedo verlo en tu ejemplo, así que creo que ese es el problema.

Aquí hay un ejemplo:

actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); actionBar.setListNavigationCallbacks(adapter, this); actionBar.setSelectedNavigationItem(position);

Funciona en mi aplicación sin ningún problema.