Persistencia de un menú de contexto tras la rotación de la pantalla
Tengo una actividad que en su método onCreate que hace:
registerForContextMenu (theView);
- El lanzamiento de un cuadro de diálogo "No se puede agregar ventana - símbolo nulo no es para una aplicación" con getApplication () como contexto
- El menú de contexto de verificación de Android no se recuerda marcado
- ContextMenu no aparece en el clic largo
- Cómo crear un menú contextual con un archivo XML?
- Obtener la posición de fila en onCreateContextMenu
y en onCreateContextMenu:
super.onCreateContextMenu(menu, v, menuInfo); menu.add(blablabla);
Esto funciona muy bien, pero el problema es que el menú contextual desaparece cuando gira la pantalla. ¿Cómo arreglar esto?
¡Gracias por leer!
- Android: Menú contextual en un solo clic
- Obtener la identificación de la vista de oncontextitemselected
- Cómo crear un submenú con botones de radio en Android?
- Android Studio: No se puede escribir en Preferencias compartidas en la prueba instrumentada
Aquí está la solución:
El contextMenu desapareció porque de forma predeterminada al girar las llamadas android destroy () y luego onCreate () pero :
Si no quieres que Android pase por la actividad normal, destruye y vuelve a crear el proceso; en su lugar, desea manejar la recreación de las vistas usted mismo, puede utilizar los atributos android: configChanges en el elemento en AndroidManifest.xml.
<activity android:name=".SmsPopupActivity" android:theme="@android:style/Theme.Dialog" android:launchMode="singleTask" android:configChanges="orientation|keyboardHidden" android:taskAffinity="net.everythingandroid.smspopup.popup"> </activity>
De esta manera my contextMenu no se cierra cuando mi teléfono gira, porque onCreate () método no se llama.
Ver también:
- Desarrollo de aplicaciones orientadas a la orientación de Android
- activity-restart-on-rotation-android
Según el blog de desarrolladores de Android:
La clase Activity tiene un método especial llamado onRetainNonConfigurationInstance (). Este método se puede utilizar para pasar un objeto arbitrario a su futuro y Android es lo suficientemente inteligente como para llamar a este método sólo cuando sea necesario. […] La implementación puede resumirse así:
@Override public Object onRetainNonConfigurationInstance() { final LoadedPhoto[] list = new LoadedPhoto[numberOfPhotos]; keepPhotos(list); return list; }
En la nueva actividad, en onCreate (), todo lo que tienes que hacer para recuperar tu objeto es llamar a getLastNonConfigurationInstance (). En Photostream, se invoca este método y si el valor devuelto no es nulo, la cuadrícula se carga con la lista de fotos de la actividad anterior:
Puedo estar equivocado, pero por lo que sé que no puede persistir, sin embargo (esta es la parte en la que puede estar equivocado) que podría abrir el menú de forma dinámica después de rotar. Dando la ilusión de persistencia.