Android onActivityResult不是';没有被触发
我正在尝试将数据从一个活动传递到另一个活动,但未触发onActivityResult。使用名为MainActivity的启动活动,我可以查看图像库,然后使用这段代码触发onActivityResultAndroid onActivityResult不是';没有被触发,android,android-intent,startactivityforresult,Android,Android Intent,Startactivityforresult,我正在尝试将数据从一个活动传递到另一个活动,但未触发onActivityResult。使用名为MainActivity的启动活动,我可以查看图像库,然后使用这段代码触发onActivityResult Intent i = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
从另一个活动我有这段代码
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();
}
});
gridLayout.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
意图=新意图();
设置结果(结果正常,意图);
setClass(getApplicationContext(),MainActivity.class);
intent.putExtra(“someData”,id);
完成();
}
});
这也会在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);
}
});
gridLayout.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
意图=新意图();
setClass(getApplicationContext(),MainActivity.class);
intent.putExtra(“someData”,id);
startActivityForResult(意向书,2);
}
});
我已经查看了清单文件,一切都设置正确。我曾看到有人建议使用android:noHistory=“false”,但我的清单中没有这些设置。它很简单,看起来像这样
<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()
将启动该活动,这意味着将重新创建该活动并执行该过程
setResult()
是在第二个示例中调用startActivityForResult()
而不是setResult()
(如第一个示例中所示),它需要调用onActivityResult()
调用startActivityForResult()
将启动该活动,这意味着将重新创建该活动并执行该过程
setResult()
是它调用activityresult()所需的onActivityResult()
我以前读过该活动生命周期,但从未读过startActivityForResult。读完这一部分后,我觉得现在问这个问题像个白痴,哈哈,但是谢谢你的回答!没问题。它发生了:我以前读过活动生命周期,但从未读过startActivityForResult。读完这一部分后,我觉得现在问这个问题像个白痴,哈哈,但是谢谢你的回答!没问题。它发生在:D