2017-10-13 12 views
0

J'ai une activité de conception dans laquelle les utilisateurs peuvent faire beaucoup de choses comme ajouter du texte et ajouter une image.Android Enregistrer et restaurer le contexte d'activité ou la mise en page en tant que données

Maintenant, je dois donner une option pour enregistrer leur travail en tant que brouillon, donc tout leur contexte/disposition relative est converti en données et enregistré dans un fichier et il peut être récupéré même après la fermeture de l'application.

Je ne peux pas utiliser onSaveInstanceState et onRestoreInstanceState car j'ai plusieurs instances de la même activité.

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) 
{ 
// Always call the superclass so it can save the view hierarchy state 
    super.onSaveInstanceState(savedInstanceState); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) 
{ 
// Always call the superclass so it can restore the view hierarchy 
    super.onRestoreInstanceState(savedInstanceState); 

} 

donc besoin de méthode différente où je peux cliquer sur le bouton Enregistrer et enregistrer l'état d'instance avec une clé, puis cliquez sur le bouton Modifier et retourner la même instance avec en passant une clé

Mais le besoin quelque chose comme ci-dessous

public void onSaveButtonClick(Bundle savedInstanceState, Sting Key) 
{ 
    // save the activity to bundle with key and convert the bundle as data to store 
} 

public void onRestoreButtonClick(Bundle savedInstanceState, Sting Key) 
{ 
    // convert the data to bindle and start the activity with restored bundle 

} 

Répondre

0

Pour enregistrer des données de manière persistante, vous pouvez utiliser des SharedPreferences. Cela vous permet de sauvegarder les données sous forme de paires valeur/clé. Jetez un oeil à https://developer.android.com/training/basics/data-storage/shared-preferences.html

Notez que SharedPreferences ne peut gérer qu'un ensemble limité de types de données.

+0

La préférence partagée peut stocker int, string. Puis-je stocker tout l'état de l'activité dans la préférence partagée? –

+0

Votre état est également seulement un paquet de données, non? Ainsi, même lorsque vous avez besoin de stocker des données plus complexes, vous pouvez utiliser par exemple Gson (https://github.com/google/gson) pour convertir vos objets dans leur représentation json et les sauvegarder. – Headcracker

+0

Je reçois cette erreur lorsque j'essaie de convertir le contexte. E/MessageQueue-JNI: java.lang.SecurityException: Impossible de rendre le constructeur de la méthode accessible –