gpt4 book ai didi

android - 从 java 类调用在 Activity 中实现的接口(interface)方法

转载 作者:行者123 更新时间:2023-11-29 19:08:00 25 4
gpt4 key购买 nike

我想从一个编写了 web api 的 java 类中调用在 Activity A 中实现的接口(interface)方法。

流程就像从 Activity A 移动到 Activity B,然后从 Activity B 调用在单独的 java 类中编写的 api,现在在 api 的成功结果上,我想调用 Activity A 中实现的接口(interface)方法。

A -> B -> Java 类 -> A 中的 interface()

我在获取 java 类中的 Activity A 的引用以调用接口(interface)方法时遇到问题。我尝试了以下代码,但没有任何效果。感谢您的时间和帮助

Interface objInterface =  (Interface) context;
objInterface.funInterface();

Interface objInterface = (Interface) context.getApplicationContext();
objInterface.funInterface();

Interface objInterface = (Interface) new Activity_A;
objInterface.funInterface();

最佳答案

让我描述一下你想做什么,也许你会明白为什么你会遇到困难:


Interface objInterface =  (Interface) context;
objInterface.funInterface();

如果这个 context 来自 Activity B,那么这是错误的。 Activity B 和 Activity A 都是 Context,但它们不是同一个 Context


Interface objInterface =  (Interface) context.getApplicationContext();
objInterface.funInterface();

ApplicationActivity 不同。它不能神奇地变成 Activity A。


Interface objInterface =  (Interface) new Activity_A;
objInterface.funInterface();

这绝对是一个 Activity A,它确实有实现...但它与已经存在的 Activity 不同。


Activity B 不应该知道 Activity A。你的单独的 java 类不应该知道 Activity B。这是一个称为 Separation of Concerns 的通用设计原则。 .我建议首先将重点放在从 Java 类获取数据到 Activity B 上。然后,获取该数据并使用记录在案的 Activity 间通信方式将其发送回 Activity A:https://developer.android.com/training/basics/intents/result.html

最后,你可以使用像EventBus 这样的通讯库。 ,但是查看您的代码似乎您可能误解了一个核心概念,因此在您了解 android 组件的范围之前,我不建议您依赖“神奇的数据总线”。 :)

关于android - 从 java 类调用在 Activity 中实现的接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46505534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com