Android : 在第一个 activity 中收到回调,而不是在第二个中
Android : callback received in first activity , not in second
假设我有一个非常简单的界面:
interface Result {
fun success(data : String)
fun onError(e : Exception) }
我有 MainActivity :
class MainActivity : AppCompatActivity(), Result {
}
和第二个 class - 让我们说:
class SecondActivity : AppCompatActivity(), Result {
}
两个活动的实现完全相同。但是,我只能在 Main Activity 中接收回调。当我启动第二个 activity 和 运行 操作时,我可以看到来自 MainActivity 的日志,但看不到来自 SecondActivity 的日志。知道这是为什么吗?
您从 MainActivity
启动的任务,您已将 this
传递给该任务,它是 MainActivity
实例中 Result
接口的实例,因此回调在 MainActivitys'
回调中收到。
如果您从 SecondActivity
启动相同的任务并传递 this
那么它将在 SecondActivity
的实例中引用 Result
接口的实例,然后你会在SecondActivity
.
中得到回调
请记住,如果您返回 MainActivity
,在从 SecondActivity
启动的任务完成之前,您可能会收到 NPE
.
interface
和abstract
不能有直接实例,class即implement
或extends
他们会创建自己的实例,对于每个实例实施或扩展 class interface
或 abstract
class 的新实例将在实施 class.
的实例中创建
假设我有一个非常简单的界面:
interface Result {
fun success(data : String)
fun onError(e : Exception) }
我有 MainActivity :
class MainActivity : AppCompatActivity(), Result {
}
和第二个 class - 让我们说:
class SecondActivity : AppCompatActivity(), Result {
}
两个活动的实现完全相同。但是,我只能在 Main Activity 中接收回调。当我启动第二个 activity 和 运行 操作时,我可以看到来自 MainActivity 的日志,但看不到来自 SecondActivity 的日志。知道这是为什么吗?
您从 MainActivity
启动的任务,您已将 this
传递给该任务,它是 MainActivity
实例中 Result
接口的实例,因此回调在 MainActivitys'
回调中收到。
如果您从 SecondActivity
启动相同的任务并传递 this
那么它将在 SecondActivity
的实例中引用 Result
接口的实例,然后你会在SecondActivity
.
请记住,如果您返回 MainActivity
,在从 SecondActivity
启动的任务完成之前,您可能会收到 NPE
.
interface
和abstract
不能有直接实例,class即implement
或extends
他们会创建自己的实例,对于每个实例实施或扩展 class interface
或 abstract
class 的新实例将在实施 class.