我想从编写Web API的Java类中调用在活动A中实现的接口方法。
流程就像从活动A移到活动B,然后从活动B调用一个用单独的Java类编写的api,现在在api成功执行后,我想调用在活动A中实现的接口方法。
A-> B-> Java类-> interface()
我在获取Java类中的活动A的引用以调用接口方法时遇到问题。我尝试了以下代码,但没有任何效果。感谢您的时间和帮助
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
来自活动B,则错误。活动B和活动A都是Context
,但它们不是相同的Context
。Interface objInterface = (Interface) context.getApplicationContext();
objInterface.funInterface();
Application
与Activity
不同。它不能神奇地成为活动A。Interface objInterface = (Interface) new Activity_A;
objInterface.funInterface();
这绝对是一个活动A,并且确实具有实现……但是,它与已经存在的A是不同的。
活动B不应了解活动A。您的单独的Java类不应了解活动B。这是称为Separation of Concerns的常见设计原则。我建议首先集中精力将数据从Java类获取到活动B。然后,使用记录在活动之间的通信方式,获取该数据并将其发送回活动A:https://developer.android.com/training/basics/intents/result.html
最后,您可以使用EventBus之类的通信库,但在查看代码时,您似乎可能会误解了核心概念,因此在您了解android组件的范围之前,我不建议您依赖“神奇的数据总线” 。 :)
关于android - 从Java类的 Activity 中实现的调用接口(interface)方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46505534/