Android: сохранение и восстановление данных при переключении между действиями
Я пытаюсь сохранить некоторые данные вОсновная деятельность" при переключении на другой вид деятельности и восстановлении этих данных при переключении на него.
В "Основная деятельность": (восстановление данных)
protected void onCreate(Bundle savedInstanceState) {
// do usual stuff
restoreData();
}
В "Основная деятельность": (переключается на "StatusActivity»):
Bundle data = saveData();
Log.d(TAG, "Sending data to status activity intent: " +data);
Intent intent = new Intent(getApplicationContext(), StatusActivity.class);
intent.putExtras(data);
startActivity(intent);
В "StatusActivity ":
Bundle data = getIntent().getExtras();
Log.d(TAG, "Sending data to main activity intent: " +data);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.putExtras(data);
startActivity(intent);
Моя функция saveData ():
private Bundle saveData() {
Log.d(TAG, "Started saving state");
Bundle data = new Bundle();
// store stuff in the bundle
return data;
}
Моя функция restoreData ():
private void restoreData() {
Log.d(TAG, "Started restoring state");
Bundle data = getIntent().getExtras();
// restore stuff in the bundle
}
LogCat:
Мой пакет в порядке при отправке в StatusActivity:
Sending data to status activity intent:
Bundle[{obj0=Bundle[{timeSinceLastPooped=3224, hunger=5,
id=2130837505, timeSinceLastHungerUpdate=3224,
timeSinceLastFed=0, timeSinceLastHappinessUpdate=3224,
timeSinceLastEvolution=3224, posY=0.0, posX=0.0,
isDead=false, happiness=5, evolutionStage=0, type=pet}],
time=7.794168E7}]
Но затем отправка обратно в MainActivity:
Sending data to main activity intent: Bundle[mParcelledData.dataSize=648]
Что мне делать с mParcelledData, чтобы вернуть исходный пакет? Спасибо!
Ответ:В "Основная деятельность": (восстановление данных)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if(requestCode == 1) {
if(resultCode == RESULT_OK) {
restoreData(intent);
}
}
}
В "Основная деятельность": (переключается на "StatusActivity»):
Bundle data = saveData();
Log.d(TAG, "Sending data to status activity intent: " +data);
Intent intent = new Intent(getApplicationContext(), StatusActivity.class);
intent.putExtras(data);
startActivityForResult(intent, 1);
В "StatusActivity ":
Bundle data = getIntent().getExtras();
Log.d(TAG, "Sending data to main activity intent: " +data);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.putExtras(data);
setResult(RESULT_OK, getIntent());
finish();