seguridad samsung restauro restaurar que pasa hacer google fabrica copia completa celular android view bundle

samsung - Guardar y restaurar el estado de vista de Android



restaurar copia de seguridad android (3)

Estoy al tanto del estado de actividad de salvar y restaurar. Pero lo que quiero hacer es guardar y restaurar el estado de una vista. Tengo una vista personalizada y dos métodos anulados en ella:

@Override protected void onRestoreInstanceState(Parcelable state) { if (state instanceof Bundle) { Bundle bundle = (Bundle) state; currentLeftX = bundle.getInt(CURRENT_LEFT_X_PARAM, 0); currentTopY = bundle.getInt(CURRENT_TOP_Y_PARAM, 0); } super.onRestoreInstanceState(state); } @Override protected Parcelable onSaveInstanceState() { super.onSaveInstanceState(); Bundle bundle = new Bundle(); bundle.putInt(CURRENT_LEFT_X_PARAM, currentLeftX); bundle.putInt(CURRENT_TOP_Y_PARAM, currentTopY); return bundle; }

Esperaba que esto funcionara sin problemas, pero se encontró y error:

Causado por: java.lang.IllegalArgumentException: Clase de estado incorrecta, que esperaba View State pero que recibió la clase android.os.Bundle en su lugar. Esto generalmente ocurre cuando dos vistas de diferentes tipos tienen la misma identificación en la misma jerarquía. La identificación de esta vista es id / mapViewId. Asegúrese de que otras vistas no usen la misma identificación. en android.view.View.onRestoreInstanceState (View.java:6161)

Pero esta vista es la única en mi actividad. Entonces, estoy preguntando:

¿Cuál es la forma correcta de guardar el estado de la vista?



Podría estar equivocado, pero creo que debes guardar el paquete que el padre devuelve:

@Override protected Parcelable onSaveInstanceState() { Parcelable bundle = super.onSaveInstanceState(); bundle.putInt(CURRENT_LEFT_X_PARAM, currentLeftX); bundle.putInt(CURRENT_TOP_Y_PARAM, currentTopY); return bundle; }

De lo contrario, estás perdiendo todo lo que ha salvado la superclase.