等待另一个活动的结果

时间:2012-04-10 19:47:52

标签: android android-activity concurrency synchronization

在一项活动(比如说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到达。相反,它继续并使用布尔结果的默认值。 任何解决方案?

如果这个特定的块在另一个线程中,我可以写一个synchronized块和 在启动活动B之后发出wait(),然后在onActivityResult()中发出notify()。 但由于只有一个线程,这不是一个选项吗?

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

1 个答案:

答案 0 :(得分:5)

  

任何解决方案?

onActivityResult()代码清单中的最后两行和described in the Android documentation一样。

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