2

在一项活动(比如 A)中,我必须根据另一项活动(B)的结果执行某项任务。我使用 startActivityForResult() 开始活动 B。伪代码是这样的:(在活动A中)

//Statements
//startActivityForResult(activityB)
//get the result in some local variable for activity A. result is a boolean
//if(result==true) do something
//else do something else

现在我面临的问题是,在启动活动 B 后,它不会等待结果从 B 到达。相反,它继续并使用布尔结果的默认值。有什么解决办法吗?

如果这个特定的块在另一个线程中,我可以编写一个同步块并在启动活动 B 后发出 wait(),然后在 onActivityResult() 中发出 notify()。但既然只有一个线程,那不是一个选择,对吧?

应该提到 activityB 接受用户输入是/否并返回它。所以在启动它时,结果不是立即可用的

4

1 回答 1

5

有什么解决办法吗?

onActivityResult()Android 文档中所述,将代码清单中的最后两行放入。

更重要的是,您还需要重写activityB 以实际按照使用说明setResult()将结果传递回activityA。

于 2012-04-10T19:55:08.667 回答