Activity A
来电Activity B
Activity C
Activity B
调用了完成,(从堆栈历史Activity B
中清除)Activity B
onBackPressed()
中,我通过setResult()
将数据从Activity B
传递到Activity A
,但在Activity A
中数据为{{ 1}}和null
。如何从resultCode 0
中的Activity B
获取数据?
答案 0 :(得分:1)
打开C时不要从B调用finish()
。而是使用startActivityforResult()
调用C,然后在触发B中onActivityResult()
时将数据传回B.类似的东西:
ActivityB {
onCreate(Bundle) {
startActivityForResult(ActivityC, 0);
}
onActivityResult(int, int, Intent){
setResult(resultCode, data);
finish();
}
}
编辑:
在呼叫B时显然添加标志Intent.FLAG_ACTIVITY_FORWARD_RESULT
实际上也应该达到预期效果。
每天都学习新事物......
答案 1 :(得分:0)
其他方式有多种方法:
将数据从Activity C
存储到Application
的对象,然后在Activity A
中阅读:
((MySuperApplication) getApplication()).setMyData(..);
将其作为活动结果传递
SharedPreference
中的Activity C
并在Activity A
中阅读。如果它是一个复杂的数据结构 - 我建议使用gson
序列化对象并将其存储为string
,然后在Activity A
选择您最喜欢的那个。
答案 2 :(得分:0)
使用共享偏好
C ACTIVITY
SharedPreferences sf = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sf.edit();
editor.putString(key, value);
editor.commit();
A ACTIVITY
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
String savedPref = sharedPreferences.getString(key, "");
mOutputView.setText(savedPref);