我试图将数据从一个活动传递到另一个活动,但是没有触发onActivityResult。通过我的启动活动(称为MainActivity),我能够查看图像库,然后使用这段代码触发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 =&#34; false&#34;但是我的清单中没有这些。它非常简单,看起来像这样。
<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>
如果有人有任何见解,为什么这不会被触发,我将不胜感激!
答案 0 :(得分:3)
在第二个中,您呼叫startActivityForResult()
而不是setResult()
(如第一个示例中所示)。
调用startActivityForResult()
将启动活动,这意味着它将被重新创建并通过Activity lifecycle。
setResult()
是您拨打onActivityResult()
所需的内容。