如何从Android中的子活动调用父活动中的函数(带参数)。我使用委托和协议来简单iOS,但在Android中我发现如果屏幕旋转可能会出现问题。
我也不想使用startActivityForResult,因为我不想关闭子Activity。
增加: 我正在创建一个库,以便其他开发人员可以将它附加到他们的项目。在开发人员活动中,他们放置了显示我的按钮(我的意思是来自图书馆)活动,当我的活动中完成某些事情时,我立即需要通知主要项目(活动)发生的事情(通过功能或某事),但我做我还不想关闭我的活动。我也不应该更改他们的代码,并且应该很容易包含在他们的代码中。
答案 0 :(得分:4)
关键是,一旦您开始子活动,Android可能会决定在任何时候关闭您的父活动,如果系统需要更多内存。这意味着您不能依赖父活动仍在运行的事实。这就是为什么你也不能使用静态变量方法,因为父活动可能不存在。
如果您希望您的应用在任何情况下都可靠运行,您必须使用startActivityForResult并关闭子活动。
如果由于某些原因导致您无法接受,则可能会分享更多详细信息,我们会尝试根据Android概念为您找到合适的解决方案。
补充:我正在创建一个库......
如前所述,只要您开始新的子活动,就无法控制父活动是否关闭。 Android可以随时终止您的父活动,您需要做好准备妥善处理这种情况。
要解决您的问题,您需要一个在父和子活动之间共享的地方。序列将是这样的。父活动启动子活动并进入后台。用户更改了子活动中的某些内容,并将更改(作为数据)存储到共享位置。在此步骤,父活动是否仍在运行或现在无关紧要。一旦父活动再次可见,如果必须读取子活动存储的数据,并相应地更新自身。您可以使用onStart()
方法。
现在关于那个共享的地方。我不鼓励你使用静态变量。相反,您可以使用Application对象(它是单例)或共享首选项(它们也是共享的)。