我尝试了很多不同的方法在不同的类中使用相同的对象。我想这样做,因为我希望数据存储在这个对象中。 但无论我做什么,当我按下手机上的“后退”按钮然后返回时,它都不会被存储。
我正在将包含该对象的包发送到第二个活动,如下所示:
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
对
答案 1 :(得分:0)
重写活动的onBackPressed()
方法并使用@blackbelt的startActivityForResult()
和onActivityResult()
您可以在开发者页面http://developer.android.com/reference/android/app/Activity.html#StartingActivities
上看到一个示例 onBackPressed()控件返回上一个活动,您可以在Intent
中创建新的onBackPressed()
,然后创建一个Bundle
并将捆绑包放入setResult()
这样的setResult(RESULT_OK, mBundle);
方法和Bundle对象将被传递回前一个活动。
简短
@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();
}