我看到有人已经问过类似的问题(Skip going back to direct parent activity when pressed back),但不一样,所以这是我的情况。
有3个活动,即A,B,C,并且调用按以下顺序排列:A - > B - > C.在C中,我必须在行动发生时返回A.
使用以下代码启动B和C:
Intent target = new Intent(parent, B.class); //or C.class
startActivityForResult(target, 1);
在C中,我将关闭活动并返回B:
Intent intent = new Intent();
intent.putExtra("EXTRA", neededObject);
setResult(1, intent);
finish();
在B中我实现了onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
setResult(1, data);
finish();
}
不,我期待将调用A#onActivityResult(我需要A#onActivityResult方法中的Extra-Intent-Data)。但事实并非如此: - (
这是我的AndroidManifest:
<activity android:name=".activities.C"
android:parentActivityName=".activities.B">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".activities.Other"/>
</activity>
为什么不调用该方法?我可以用另一种方式实现吗?
如果有人可以帮助我,那就太棒了。
答案 0 :(得分:1)
我认为您的B活动的onActivityResult应该如下所示
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 1) {
Intent intent = new Intent();
intent.putExtra("MESSAGE", message);
setResult(1, intent);
finish();
}
}