
I have one activity and 2 fragment.
I want when in activity fire
execute : OneFragment -> receivePrevIEw .execute : TwoFragment -> receivePrevIEw .Listener.receivePrevIEw(obj)then
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中的多个类中使用一个接口?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)