2012-05-14 15 views
5

Uso la barra de acciones de Sherlock en mi aplicación. Utilicé la función "ifRoom | withText" en mi menú. Si pruebo mi código en modo vertical, solo puedo ver el ícono y si giro la orientación a horizontal, todavía veo solo el ícono. Por otro lado, si ejecuto Landscape, puedo ver texto e icono en vertical y horizontal. Esto significa que cuando se gira la pantalla, la barra de acciones no se actualiza. ¿Cómo puedo arreglarlo?El scherlock de barra de acciones no se actualiza cuando se cambia la orientación

En menú, que tienen

android:showAsAction="ifRoom|withText" 

También utilicé esta línea en mi archivo de manifiesto que fija

android:configChanges="keyboardHidden|orientation|screenSize" 

pero no funcionó. Y corro mi código de Android 2.3

También utilicé fragmento en mi actividad,

 FragmentManager fm = getSupportFragmentManager(); 
    ft = fm.beginTransaction(); 

    mFragment1 = fm.findFragmentByTag("f1"); 

    if (mFragment1 == null) { 

     mFragment1 = new MenuFragment(); 
     ft.add(mFragment1, "f1"); 

    } 

    ft.commit(); 

Respuesta

6

Manejo de configuración cambios no son compatibles con ActionBarSherlock.

En pre-ICS, ActionBarSherlock NO es parte de la vista de decoración como la barra de acción nativa y, por lo tanto, está sujeta a las mismas restricciones que su vista de contenido. Al manejar los cambios de configuración, no está permitiendo que la biblioteca se adapte al cambio y, por lo tanto, verá una visualización incorrecta o ciertas partes.

La documentación de Android desalienta el manejo de los cambios de configuración también. Evitarlos a toda costa, especialmente cuando se usa ActionBarSherlock.

En una nota relacionada, todavía estoy tratando de solucionar esto para futuras versiones de la biblioteca, pero por ahora se recomienda evitar.

+0

Tengo un código que ha estado en mi método onDestroy, pero acabo de agregar ABS, que ahora llama a Destroy cuando giras. ¿Crees que mi mejor opción es mover ese código en el controlador para el botón Atrás? Gracias – Matt

+0

Puede reemplazar 'onDestroy' siempre que recuerde llamar al método de superclase. –

+0

Olvidé mencionar que no estaba destruyendo actividades antes de rotar. Así que moví el código al método onBackPressed en su lugar. – Matt

0

creo que tendrá que volver a crear el menú de la Barra de acciones sobre el cambio de configuración

invalidateOptionsMenu(); 
+0

Gracias por su respuesta, intenté su función en el cambio de configuración, pero no funcionó. ¿Tiene usted alguna otra idea? – SavasCinar

+0

Mi única otra sugerencia sería probar supportInvalidateOptionsMenu(); – Tony

+0

Gracias tony, pero aún así no tuvo ningún efecto. No sé, ¿dónde está el problema? – SavasCinar

Cuestiones relacionadas