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()
.
所需要的
我正在尝试将数据从一个 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()
.