android - Android:在第一个活动中收到回调,而不是在第二个活动中
问题描述
假设我有一个非常简单的界面:
interface Result {
fun success(data : String)
fun onError(e : Exception) }
我有 MainActivity :
class MainActivity : AppCompatActivity(), Result {
}
和二等舱 - 让我们说:
class SecondActivity : AppCompatActivity(), Result {
}
在这两个活动中,实施是完全相同的。但是,我只能在 Main Activity 中接收回调。当我启动第二个活动并运行操作时,我可以看到来自 MainActivity 的日志,但看不到来自 SecondActivity 的日志。知道为什么吗?
解决方案
您启动的任务是您MainActivity
传递this
的,它是 的实例Result
内的接口实例MainActivity
,因此在回调中接收到MainActivitys'
回调。
如果您从 中启动相同的任务SecondActivity
并传递this
,那么它将引用 的实例中的Result
接口实例SecondActivity
,然后您将在SecondActivity
.
请记住,如果您返回到MainActivity
,在启动的任务SecondActivity
完成之前,您可能会得到一个NPE
.
interface
并且abstract
不能有直接实例,类implement
或extends
它们将创建它们的实例,对于实现或扩展类的每个实例,将在实现类的实例内创建一个或类的新interface
实例abstract
。
推荐阅读
- database - 在 MongoDB 中保存高质量图像的 base64 字符串会影响性能
- python - 我正在开发一个面部识别和考勤系统,该系统将姓名和时间写入 CSV 文件,但同一个人被多次记录
- iis - 本地请求服务时 IIS 404 回复
- c# - 从 Form1_KeyPress 中的数字中分离多个数字
- codesourcery - 替换 Verifone DTK 的 Sourcery CodeBench
- javascript - 为什么 querySelector 不能在远程 wordpress 上工作(它在 localhost 上工作)
- vba - 在 PowerPoint 中使用 VBA 使用 LeftIndent 获取精确的英寸数
- c# - 使用 ICommand C# 将 UIElement 添加到 MainWindow
- javascript - 在javascript中使用set方法时如何在数组中累积特定的重复索引
- swift - 在 Swift/CoreData 中保存具有与日期相关的可变属性的数据结构的最佳方法