如何在java中的多个类中使用一个接口?

如何在java中的多个类中使用一个接口?,第1张

概述Ihaveoneactivityand2fragment.Iwantwheninactivityfirelistener.receivePreview(obj)thenexecute:OneFragment->receivePreview.execute:TwoFragment->receivePreview.publicclassMainActextendsAppCompatActivity{publicint

I have one activity and 2 fragment.

I want when in activity fire Listener.receivePrevIEw(obj) then

execute : OneFragment -> receivePrevIEw .execute : TwoFragment -> receivePrevIEw .
public class MainAct extends AppCompatActivity {    public interface OnReceiveListener {        // This can be any number of events to be sent to the activity        voID receivePrevIEw(Object... obj);    }    private OnReceiveListener Listener;}public class OneFragment extends Fragment implements OnReceiveListener{    @OverrIDe    public voID receivePrevIEw(Object... obj) {    }}public class TwoFragment extends Fragment implements OnReceiveListener{    @OverrIDe    public voID receivePrevIEw(Object... obj) {    }}

解决方法:

我认为你可以使用观察者模式,这在你的情况下是一个很好的做法.

As described by GoF:

“define a one-to-many dependency between objects so that when one object changes state, all its dependents are notifIEd and updated automatically”.

阅读更多http://www.java2blog.com/2013/02/observer-design-pattern-in-java.html#TLio7G2ruqxvfZUR.99

在您的情况下,您有这样的关系(一对多),当活动中发生事件时您想要知道两个片段.

片段是实现观察者类,您的活动具有主题角色,如上图所示.

我希望这可以帮助您以非常好的方式实现您的代码.
一些教程可以在以下链接中找到:

https://dzone.com/articles/observer-pattern-java
http://www.tutorialspoint.com/design_pattern/observer_pattern.htm

编辑:在给定的情况下:

public interface OnReceiveListener { // this is your observer interface  !        // This can be any number of events to be sent to the activity        voID receivePrevIEw(Object... obj);    }

使用此设计模式,片段的定义正确,因此我不会更改其代码:

公共类OneFragment扩展Fragment实现OnReceiveListener {

@OverrIDepublic voID receivePrevIEw(Object... obj) {}

}

public class TwoFragment extends Fragment implements OnReceiveListener{@OverrIDepublic voID receivePrevIEw(Object... obj) {}

你需要引用活动中的片段(作为观察者).

ArrayList< OnReceiveListener > observers =  new ArrayList< OnReceiveListener>();

事实上,观察者可以订阅或注册自己的主题(片段持有对活动的引用(最好使用单例模式!:D).像这样:

public class MainAct extends AppCompatActivity {private static MainAct instance;public static MainAct getInstance() { if(instance != null)    return instance;}// I think it is better to create the instance variable in the onCreate() method of the MainAct activityonCreate(...){...instance = this;...}public voID registerObserver(OnReceiveListener observer){observers.add(observer)}notifyObservers(){// call this method in the Listener you want for( Observer obser : observers)    obser. receivePrevIEw(param )}...

//在片段初始化中:
MainAct.getInstance().registerObserver(本)

总结

以上是内存溢出为你收集整理的如何在java中的多个类中使用一个接口?全部内容,希望文章能够帮你解决如何在java中的多个类中使用一个接口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1111094.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存