访问返回栈中立即activity的一个方法
Access a method of the immediate activity in the back-stack
所以场景很简单。
我有两个活动,A 和 B。
A是首页,从A可以到B。
在 Activity A 中有一个名为 setupDetails() 的私有方法来更新缓存的用户信息。
因此,在 activity B 中,当操作完成时,我想调用 setupDetails() Activity A(又名父 activity)的方法。有可能这样做吗?不,我不是在谈论 onActivityResults() 或广播监听器。我想直接从 Activity B 访问该方法。我尝试搜索类似的问题,但找不到合适的答案,因此将其张贴在这里。
你可以做到这一点,但它有点老套。
在ActivityA
中,创建一个ActivityA
类型的public static
变量,像这样:
public static ActivityA instance;
在ActivityA
启动ActivityB
之前,它可以在变量中存储对自身的引用(即:instance = this
)。
在ActivityB
中,想调用ActivityA
中的方法时,直接调用public static
变量上的方法即可,即:
ActivityA.instance.setupDetails();
这应该大部分有效,但在某些情况下它不起作用。一个示例是,如果您启动了 ActivityB
,然后应用程序进入后台。在一段时间不活动后,Android 将终止托管该应用程序的 OS 进程。当用户 returns 访问该应用程序时,Android 将为该应用程序创建一个新的 OS 进程并仅实例化 ActivityB
。在这种情况下,没有 ActivityA
的实例,因此变量 ActivityA.instance
将是 null
。为了防止 NPE,您可以检查这种情况。
所以场景很简单。 我有两个活动,A 和 B。 A是首页,从A可以到B。 在 Activity A 中有一个名为 setupDetails() 的私有方法来更新缓存的用户信息。 因此,在 activity B 中,当操作完成时,我想调用 setupDetails() Activity A(又名父 activity)的方法。有可能这样做吗?不,我不是在谈论 onActivityResults() 或广播监听器。我想直接从 Activity B 访问该方法。我尝试搜索类似的问题,但找不到合适的答案,因此将其张贴在这里。
你可以做到这一点,但它有点老套。
在ActivityA
中,创建一个ActivityA
类型的public static
变量,像这样:
public static ActivityA instance;
在ActivityA
启动ActivityB
之前,它可以在变量中存储对自身的引用(即:instance = this
)。
在ActivityB
中,想调用ActivityA
中的方法时,直接调用public static
变量上的方法即可,即:
ActivityA.instance.setupDetails();
这应该大部分有效,但在某些情况下它不起作用。一个示例是,如果您启动了 ActivityB
,然后应用程序进入后台。在一段时间不活动后,Android 将终止托管该应用程序的 OS 进程。当用户 returns 访问该应用程序时,Android 将为该应用程序创建一个新的 OS 进程并仅实例化 ActivityB
。在这种情况下,没有 ActivityA
的实例,因此变量 ActivityA.instance
将是 null
。为了防止 NPE,您可以检查这种情况。