2013-12-17 4 views
1

Я пробовал много разных способов использования одного и того же объекта в разных классах. Я хочу сделать это, потому что хочу, чтобы данные хранились в этом объекте. Но независимо от того, что я делаю, он не будет сохранен, когда я нажму кнопку «назад» на телефоне, а затем вернусь.Использовать тот же объект между действиями

Я посылаю пакет с объектом второй деятельности, как это:

Intent intent = new Intent(this, TrainingDays.class); 
Bundle bundle = new Bundle(); 
bundle.putSerializable("programObject", program); 
intent.putExtras(bundle); 
startActivity(intent); 

И я получаю объект так:

Bundle bundle = this.getIntent().getExtras(); 
program = (Program) bundle.getSerializable("programObject"); 

я могу использовать объект просто отлично, но я каждый раз, когда я переключаюсь на другую активность, объект чист от данных. Я делаю что-то неправильно здесь или это может быть что-то другое, что вызывает это? Любая помощь будет оценена.

+0

Вы можете показать ваш метод, создающее объект в? –

ответ

1

Это правильный способ управления объектами. Если вам не нужно писать объект в файле, я бы предложил переключиться на Parcelable. О вашей проблеме, если вы хотите передать обратно объект, вы можете использовать пару startActivityForResult и onActivityResult

+0

Похоже, что @ user68621 просто пытается сохранить состояние предыдущего намерения. Поэтому, когда они перемещаются назад, они все еще имеют ссылку на объект. –

+0

У него есть действия A и B. Он изменяет объект в B, и он хочет, чтобы A прочитал эти изменения. – Blackbelt

+0

Объект должен быть записан в файл позже, поэтому мне нужно его реализовать для Serializable. Могу ли я решить свою проблему, используя startActivityForResult и onActivityResult? – Langkiller

0

Переопределение onBackPressed() метода деятельности и использовать @blackbelt сочетание «s из startActivityForResult() и onActivityResult()

Вы можете увидеть пример на странице разработчика http://developer.android.com/reference/android/app/Activity.html#StartingActivities

onBackPressed() управляет вернуться к предыдущей деятельности вы могли бы создать новый Intent в onBackPressed(), а затем создать Bundle и Переводить Bundle в методе setResult() как таковой setResult(RESULT_OK, mBundle);, и Bundle Object будет передан назад предыдущее действие.

в коротких

@Override 
public void onBackPressed(){ 
    Intent data = new Intent(); 
    Bundle newBundle = new Bundle(); 
    newBundle.putParcelable("MyObject", mObject);// must extend Parcelable on Object class 
    data.putBundleExtra("ObjectBundle", newBundle); 
    setResult(RESULT_OK, data); 
    finish(); 
} 
+0

Затем используйте клавишу ObjectBundle, чтобы обратиться к разделу Bundle и MyObject, чтобы обратиться к parcelable в 'onActivityResult()' и –

+0

. Спасибо за вашу помощь. Теперь он отлично работает – Langkiller

Смежные вопросы