Conozco el estado de actividad de guardar y restaurar. Pero lo que quiero hacer es guardar y restaurar el estado de una vista. tengo una vista personalizada y dos métodos overrided en ella:Guardar y restaurar ver estado android
@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;
}
que esperaba que esto funcione sin problemas, pero se encontró con y error:
Caused by: java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class android.os.Bundle instead. This usually happens when two views of different type have the same id in the same hierarchy. This view's id is id/mapViewId. Make sure other views do not use the same id. at android.view.View.onRestoreInstanceState(View.java:6161)
Pero este punto de vista es el único en mi actividad. Entonces, estoy preguntando:
¿Cuál es la forma correcta de guardar el estado de la vista?
tuve que reír, porque de lo ridícula que es el diseño de Android. El método no espera Ver el estado *** obviamente ***, *** obviamente *** espera una interfaz llamada *** Parcelable ***. Y sí, devolvemos un *** *** Parcelable *** válido que se implementa con *** Bundle ***. Pero falló por una razón ridícula. Nunca he encontrado este tipo de diseño en .NET, cuando espera una interfaz, no debería haber ninguna excepción si devolvemos esa interfaz exacta. La excepción debería decir algo más que tenga más sentido =))) Android es un gran ejemplo de cómo el diseño *** malo *** puede hacerte enojar. –