我创建了一个有三个活动的应用程序,它的工作原理如下:
Activity A --> Activity B --> Activity C
从活动C返回到活动A是这样的:
Activity C --> Activity B --> Activity A
我想将Activity C
中的对象传递给Activity A
,但是当我按下后退按钮或者什么时候,所有活动的对象都被破坏了,我无法在Activity上接收到该对象A.如何将Activity C
中的对象传递给Activity A
?
(我使用DB来解决这个问题,当我在活动C中时,我将对象插入表中,并使用活动A中的表来获取对象。但我正在寻找更简单的方法来解决它)
请指导我......
由于
答案 0 :(得分:1)
您可以覆盖活动A和B中的onActivityResult
,以便B只从C中取回结果并将其传递回A
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (A) : {
if (resultCode == Activity.RESULT_OK) {
// Extract the data returned from the Activity.
}
break;
}
}
}
在B和C中你应该将对象传回给调用活动:
Intent resultIntent = new Intent();
// add your object here to the resultIntent
setResult(Activity.RESULT_OK, resultIntent);
finish();
答案 1 :(得分:1)
使用Activity C
中的shared Preferences,如图所示。
SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
data.edit().putString("somevalue", myvalue).commit();
并在Activity A
中将其称为:
SharedPreferences data = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
String myval= data.getString("somevalue","");
答案 2 :(得分:0)
如果这是原始数据类型,则可以使用SharedPreferences机制。您还可以使用一些公共静态字段。
有关您的问题的更多信息:http://developer.android.com/guide/faq/framework.html#3