Android - 父活动应确定子活动调用它

Posted

技术标签:

【中文标题】Android - 父活动应确定子活动调用它【英文标题】:Android - Parent activity should determine what child activity had called it 【发布时间】:2012-06-10 23:56:25 【问题描述】:

我的项目中有 2 个活动,比如说活动 A 和活动 B。A 和 B 都扩展同一个超类:BaseActivity。 我们知道,在这种情况下,假设如果打开了 Activity A,则调用超类方法 onCreate(),然后是 Activity A 的 onCreate()。

在BaseActivity父类的onCreate()方法中,如何判断哪个子Activity启动了?

【问题讨论】:

【参考方案1】:

我会建议一种不同的方法。基本上不做继承。改用合成。请记住,您认为需要扩展的大多数操作实际上只需要对上下文的引用。活动从上下文延伸。所以实际上,您可以在任何引用活动上下文的类中提供大多数基本功能。完全不需要继承。

因此,如果您想在 ActivityA 和 ActivityB 之间共享某些功能,只需将其放在 HelperC 中

HelperC.someOperation(Context c, otherParams)

HelperC 可以做一些基本活动可以做的任何事情。最终,基本活动将永远不会存在。它将始终是实例化版本 A 或 B

【讨论】:

另外,请在 Google 上研究组合与继承,了解组合的优势。它真的有一个与是一个关系。例如 is-a-doctor vs. is-a-person that has-a-doctor-role。 has-a 更加灵活和动态。【参考方案2】:

我认为你不应该这样做。 据我记得扩展的想法,超类方法应该只包含通用代码。将不同的代码放在子类中会更容易,而且我认为更合适。

你可以在parent onCreate()中初始化一些值,然后在childs'中重新设置。

【讨论】:

以上是关于Android - 父活动应确定子活动调用它的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular 2 中,如何使用父路由确定子路由中的活动路由?

Android:setResult 未将结果返回给父 Activity

从Android中的子活动中取回对象[重复]

在 Android 中删除父活动链接

如何设置多个父活动以使用android后退按钮

删除Android中的父活动链接