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

标签 android interface

我想从一个编写了 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/

相关文章:

c# - Visual Studio 2017 Xamarin Android 编译警告 "fakeLogOpen(/dev/log_security) failed"中断构建

java - 使用 gson 反序列化 JSON 对象数组时遇到问题

Java [安卓] : should I used synchronized ou semphore object?

java - 在接口(interface)中使用 getter/setter 方法

java - 在 C++ 中的 java 中的接口(interface)?

c# - 将泛型类型传递给泛型接口(interface)

android - 如何将 android.support.v7.widget.GridLayout 添加到 intelliJidea?

android - 如何查看用户从哪里安装我的应用程序

interface - 使用 Dart/Flutter 导入 Umbrella

java - 如何从通用枚举类型中检索常量的接口(interface)?