onActivityResult 未被触发

onActivityResult isn't being triggered

我正在尝试将数据从一个 activity 传递到另一个,但是没有触发 onActivityResult。通过名为 MainActivity 的启动 activity,我能够查看图片库,然后使用这段代码触发 onActivityResult。

  Intent i = new Intent(
                    Intent.ACTION_PICK,
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

            startActivityForResult(i, RESULT_LOAD_IMAGE);

从另一个Acitivity我有这段代码

 gridLayout.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent =new Intent();
            setResult(RESULT_OK,intent);
            intent.setClass(getApplicationContext(), MainActivity.class);
            intent.putExtra("someData",id);
            finish();

        }
    });

这也会在 MainActivity 中调用 onActivityResult 就好了,但是下一行代码不会。

   gridLayout.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent intent = new Intent();
            intent.setClass(getApplicationContext(), MainActivity.class);
            intent.putExtra("someData",id);
            startActivityForResult(intent, 2);
        }
    });

我查看了清单文件,一切设置正确。我见过人们建议诸如转动 android:noHistory="false" 之类的东西,但是我的清单中有 none 这些设置。它非常简单,看起来像这样。

  <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true">

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/CustomTheme"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".ImageRollActivity"
        android:theme="@style/GridTheme"
        android:label=" Image Roll"
        android:parentActivityName=".MainActivity"
        >
    </activity>

如果有人知道为什么没有触发,我们将不胜感激!

在第二个例子中,你调用 startActivityForResult() 而不是 setResult()(如第一个例子)。

调用 startActivityForResult() 将启动 Activity,这意味着它将被重新创建并通过 Activity lifecycle

setResult() 是您调用 onActivityResult().

所需要的