我将数据发送到初始化选项卡时遇到问题。在getData()方法中,我收到的适配器为null,recyclelerview也为null。
TabOne one = new TabOne()one.getData(populatedList)错误是……
你不能从其他Activity / Fragment调用片段方法。
你有几种方法可以解决这个问题
的 计划A. 强> (建议)
使用 EventBus 图书馆
的 1 强> : 创建 EventClass.java 像这样
EventClass.java
public class EventClass{ private List<FILL IT WITH YOUR OBJECT> populatedList; public EventClass(int populatedList) { this.populatedList= populatedList; } public int getPopulatedList() { return populatedList; } }
的 2 强> : 用它
在你的活动而不是这个
TabOne one = new TabOne() one.getData(populatedList)
使用EventBus并发布您的活动
EventBus.getDefault().postSticky(new EventClass(populatedList));
的 3 强> 在片段内抓取您的数据。将此功能添加到Fragment中
@Subscribe public void onEvent(EventClass event) { oneAdapter.setData(event.getPopulatedList()); }
的 4 强> 不要忘记在Fragmet中注册和取消注册您的EventBus
EventBus.getDefault().register(this);//add in onCreateView //... EventBus.getDefault().unregister(this);//add in onDestroyView
的 计划B. 强>
使用 的 界面设计 强> 用于片段中的回调。您必须为更改数据创建一个接口 changingDataListener 和 implements 在你的 的 分段 强> 并从中调用callBack 的 活动 强>
changingDataListener
implements
的 计划C. 强> (高级)
使用 的 RxJava 强> 同 PublishSubject 您可以创建Observable来观察新数据,当新数据到达时,您可以更新适配器。
PublishSubject
的 相信我 强> 计划A更简单!