2011-03-23 97 views
0

我已经知道,我可以通过setResult将一个活动的Bundled数据传递回另一个活动。不过,假设我有一个全局活动,可以从我的应用程序的任何地方启动,因为它映射到几乎所有活动中出现在我的标题栏中的按钮。从全局活动回调到堆栈底部的活动

长话短说,它完成了它的用户驱动的过程后,我想它的信号回在后面堆栈中的第一个活动,基本上我的家庭活动,从而相应地更新UI。问题的

部分原因是因为如果我使用一个BroadcastReceiver,它是未注册时,我的活动是在后台运行,它不会得到信号刷新其数据集。

我想实现的是以下几点:

从任何一个家庭(ActivityA),或任何其他活动(活动B,C,等...),可以打开我的全球经济活动(ActivityX)它应该找到一种方式回调给ActivityA,而不必将它带到前面。

我应该使用FLAG_ACTIVITY_FORWARD_RESULT如果是的话,我应该怎么就从我家后后续活动建模。换句话说,如果我从Home启动一个子活动,我应该使用startActivityForResult与我定义的任何请求代码一起启动它,然后在打开我的全局活动时传递FLAG_ACTIVITY_FORWARD_RESULT,以便从那里设置结果?

此外,假设我从推出家庭一个孩子的活动与结果,然后从我的孩子的活动我到堆栈,从我打开ActivityX添加更多。只要我从家中打开第一个孩子,结果是系统还记得结果链吗?

编辑:我不打算在ActivityX中完成该过程后立即将整个堆栈清理回家;只是当用户最终返回到主屏幕时,通过Home信号发送信号来刷新用户界面的方式。我猜想可能会设置一个SharedPreference标志,当用户重新关注该Activity时,HomePreview会检查onStart,这反过来又给了我做最终结果的条件,之后该标志被重置。

回答

1

你的主屏幕应该只是在onResume中更新它的UI,这种方式只要用户返回它就会显示最新的数据。没有必要传递回调。否则,您可以在家庭活动中登记onCreate中的广播接收器(并在onDestroy ...中取消注册),然后在想要更新家庭活动时发送广播(尽管家庭活动实际上不应该自行更新,直到它被恢复)。

下面是如何回到你的家的活动:

Intent goHome = new Intent(getContext(), HomeActivity.class); 
goHome.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
goHome.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(goHome); 

FLAG_ACTIVITY_CLEAR_TOP:这可确保在活动启动时,它会显示其初始活性。

FLAG_ACTIVITY_NEW_TASK:我们正在开始一个新的任务(即后退按钮不应该返回到前一个屏幕,以便在您的主屏幕上按回退出您的应用程序)。

明天我会更新其余部分。

+0

我不认为这个答案是我正在寻找的。我想要做的事情并不一定在触发点立即清楚所讨论的那个下面的每个活动,而只是以回叫的形式回到家中。onActivityResult),一旦用户最终导航回家。 – 2011-03-23 03:57:31

+0

已编辑的文章。希望看到信息更接近你想要的。 – 2011-03-23 08:42:36