我想从编写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();


ApplicationActivity不同。它不能神奇地成为活动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/

10-09 15:47