首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >立即调用onActivityResult

立即调用onActivityResult
EN

Stack Overflow用户
提问于 2013-03-28 16:34:47
回答 1查看 5.1K关注 0票数 5

我正在从按钮处理程序中使用startActivityForResult()启动一个活动,甚至在目标活动的onCreate()被击中之前,onActivityResult()就被称为立即

代码语言:javascript
复制
public void onGraphNext (View target) {
    Intent i = new Intent(this, AddCommentActivity.class);
    startActivityForResult(i,6);    // 6 is arbitrary request code               
}    

。。。

代码语言:javascript
复制
protected void onActivityResult(int requestCode, int resultCode,
        Intent returnData) {
   if  ( (resultCode == RESULT_OK) && (requestCode == 6) ) {
   Bundle extras = returnData.getExtras();
   comment = extras.getString("comment");
     }
} 

返回的结果代码为0,请求代码为6。在StackOverflow的其他地方,我看到人们报告了这个问题,解决方案是在清单中不对launchMode使用singeInstance。但我用的是标准。。。

代码语言:javascript
复制
<activity android:name="AddCommentActivity"
          android:configChanges="orientation"
          android:screenOrientation="portrait"
          android:launchMode="standard"></activity>  

提前感谢您的任何见解!

编辑:I编写了一个简单的测试程序,当调用者("launcher") --带有onActivityResult的活动--是singleInstance并且正在调用的活动("launchee")是标准时,我可以可靠地再现问题。即,

代码语言:javascript
复制
<activity android:name="Launcher"
          android:screenOrientation="portrait"
          android:launchMode="singleInstance"></activity> 

<activity android:name="Launchee"
          android:screenOrientation="portrait"
          android:launchMode="standard"></activity>  

这对我来说是个问题,因为在真正的应用程序中,由于其他原因,被调用者必须是singleInstance,但它希望有按钮来启动其他活动,以请求用户输入。如果我不能使用startActivityForResult,还能怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2013-05-18 19:11:14

如果正在启动的活动与启动该活动的活动不在同一任务中运行,则不能使用startActivityForResult()。这意味着这两个活动都不能有launchMode="singleInstance"。如果您要求这两个活动在不同的任务中运行,那么您需要使用不同的机制。startActivityForResult()似乎暗示了这一点:

例如,如果您启动的活动使用singleTask启动模式,它将不会在您的任务中运行,因此您将立即收到取消结果。

您可以做的就是使用startActivity()启动活动,并让被调用的活动调用startActivity()返回到您的活动,并根据需要在它使用的Intent中发送数据。

但是,您可能会考虑是否真的需要这些特殊的launchModes。一般情况下,它们只适用于主屏幕替换和其他非常特殊的应用。大多数使用singleInstancesingleTask启动模式的开发人员都不正确地使用它们。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15687322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档