onActivityResult从未调用过

tho*_*aus 18 android android-intent android-activity

到目前为止,我成功使用了startActivity函数,现在我需要使用startActivityResult,我遇到了问题.

使用此函数时,我希望启动的活动正确启动,但似乎永远不会调用onActivityResult函数.

以下是我在FriendPicker活动中的代码,以表示MoodPicker活动:

Intent intent = new Intent(FriendPicker.this, MoodPicker.class);
startActivityForResult(intent, 2);
Run Code Online (Sandbox Code Playgroud)

这是我在MoodPicker活动中的代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{                   
    super.onActivityResult(requestCode, resultCode, intent);

    Log.i("in OnActivityResult", "Activity Result");                        

    switch (requestCode)
    {
        case 2:             
            Log.i("in OnActivityResult", "Activity Resut 2");                

            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

并且我的日志文件中没有任何内容(我当然检查了我的日志文件是否正常工作并使用文本视图输出进行双重检查).

有没有我忘记在Manifest文件中声明的内容?

提前致谢.

小智 28

我有同样的问题并解决了它:只需删除

android:launchMode="singleInstance"
Run Code Online (Sandbox Code Playgroud)


Xav*_*Gil 19

就我而言,我没有意识到我是startActivityForResult从一个android:noHistory在清单中将属性设置为true 的活动调用的.因此,onActivityResult从未调用过,因为没有活动实例了.

  • 几个小时我一直坚持这个问题.然后我看到你的答案,意识到我犯了同样的错误.谢谢你的回答! (5认同)

Kev*_*din 10

setResult()在MoodPicker课程中添加了这个电话吗?

  • 请添加您的解决方案,以便阅读此帖子的其他用户可以找到有用的帮助. (12认同)

eye*_*yus 6

如果我正确阅读,所有引用的代码都必须在"FriendPicker"中.在"MoodPicker"中,您需要这样的代码来设置结果并结束自己:

this.setResult(SUCCESS_RETURN_CODE, i);
this.finish();
Run Code Online (Sandbox Code Playgroud)

如果这有帮助,请告诉我......

  • 应将onActivityResult()放在您调用startActivityForResult()的Activity中 (3认同)

Nic*_*ian 6

android:noHistory="true" 
Run Code Online (Sandbox Code Playgroud)

喜欢

android:launchMode="singleInstance"
Run Code Online (Sandbox Code Playgroud)

将从接收结果停止onActivityResult.


ins*_*iac 5

android API中有bug.在startActivityForResult(intent,requestCode)中; 只要requestCode = 0,这个功能就可以工作.但是,如果将请求代码更改为零以外的任何值,ApiDemos将失败(并且不会调用OnActivityResult).在这里找到:

[编辑:链接已被删除,因为Google群组因垃圾邮件而超支]

  • 实际上它适用于任何requestCode> = 0.但是任何不利的事情都不会. (2认同)