Estoy tratando de solucionar el problema con el reinicio de la actividad en los cambios de orientación.¿Cómo establecer el elemento activo en la barra de navegación desplegable de la barra de acciones?
Tengo un ActionBar
con la lista desplegable de navegación y después de cada rotación se activa el primer elemento de esta lista. Mantener el contenido de fragment
no fue difícil, pero no sé cómo configurar el elemento de la lista activa.
Aquí es la definición de ActionBar
:
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ArrayAdapter<CharSequence> list = ArrayAdapter
.createFromResource(this, R.array.action_list, android.R.layout.simple_dropdown_item_1line);
list.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
getActionBar().setListNavigationCallbacks(list, this);
Y aquí está mi solución:
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
if (!application.isRotated) {
application.activePosition = itemPosition;
application.activeId = itemId;
getFragmentManager().beginTransaction()
.replace(android.R.id.content, MyFragment.newInstance(itemPosition))
.commit();
} else {
application.isRotated = false;
this.onNavigationItemSelected(application.activePosition, application.activeId);
}
return true;
}
@Override
protected void onStop() {
super.onStop();
application.isRotated = true;
}
No estoy seguro de que es la mejor solución sin embargo.
¿Le importaría publicar un ejemplo de cómo llegó esto funcione? He estado intentando algo como getActionBar(). SetSelectedNavigationItem (1) pero no tiene ningún efecto ... (Alguien más con el mismo problema aquí: http://stackoverflow.com/questions/8487425/actionbar-dropdown-spinner-item -defaults-to-first-item) – brk3
Claro, actualicé mi respuesta. Además, puedes echarle un vistazo al código fuente de mi aplicación para ver cómo la uso. https://github.com/Tsukanov/Simple-Counter/blob/master/src/me/tsukanov/counter/CounterActivity.java#L90 – Roman
¡Gracias, funciona! Creo que lo que debía haber estado haciendo mal fue llamar al setSelectedNavigationItem antes de agregar el adaptador.Estaba seguro de que lo intenté de esa manera antes, pero bueno, ahora funciona :) – brk3