首页 > 解决方案 > Android:在第一个活动中收到回调,而不是在第二个活动中

问题描述

假设我有一个非常简单的界面:

interface Result {
    fun success(data : String)
    fun onError(e : Exception) }

我有 MainActivity :

class MainActivity : AppCompatActivity(), Result {
}

和二等舱 - 让我们说:

class SecondActivity : AppCompatActivity(), Result {
}

在这两个活动中,实施是完全相同的。但是,我只能在 Main Activity 中接收回调。当我启动第二个活动并运行操作时,我可以看到来自 MainActivity 的日志,但看不到来自 SecondActivity 的日志。知道为什么吗?

标签: androidcallback

解决方案


您启动的任务是您MainActivity传递this的,它是 的实例Result内的接口实例MainActivity,因此在回调中接收到MainActivitys'回调。

如果您从 中启动相同的任务SecondActivity并传递this,那么它将引用 的实例中的Result接口实例SecondActivity,然后您将在SecondActivity.

请记住,如果您返回到MainActivity,在启动的任务SecondActivity完成之前,您可能会得到一个NPE.

interface并且abstract不能有直接实例,类implementextends它们将创建它们的实例,对于实现或扩展类的每个实例,将在实现类的实例内创建一个或类的新interface实例abstract


推荐阅读