跳过活动onActivityResult不会被称为

时间:2015-05-20 18:15:06

标签: java android

我看到有人已经问过类似的问题(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>

为什么不调用该方法?我可以用另一种方式实现吗?

如果有人可以帮助我,那就太棒了。

1 个答案:

答案 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();
    }
}