要求:FragmentA包含列表---用户可以将任何项目标记为收藏/不收藏。标记收藏夹时,fragmentA中的图标将标记为红色,并且项目应出现在FavoriteFragment中。(使用EventBus实现了此功能]
类似地,将任何项目从FavoriteFragment中标记为不受欢迎,应从FavoriteFragment中将其删除,并且FragmentA图标将被标记为绿色(为此需要解决)
已尝试EventBus.getDefault()。register(this);在两个fragmentA和FavoriteFragment中但是在发布两个片段时都调用了[[onMessageEvent。
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(List<Event> result) {
}
implementation 'org.greenrobot:eventbus:3.1.1'
数据模态(Data.java)
public class Data { private List<Boolean> markList; public List<Boolean> getMarkList() { return markList; } public void setMarkList(List<Boolean> markList) { this.markList = markList; } }
源片段(FragmentA.java)
public class FragmentA extends Fragment { private void sendDataToFavorit(){ List<Boolean> selectedList = new ArrayList<>(); selectedList.add(true); // index 0 selectedList.add(false); // index 1 Data data = new Data(); data.setMarkList(selectedList); EventBus.getDefault().post(data); } }
目标片段(FavoriteFragment.java)
public class FavoriteFragment extends Fragment { private Context context; public FavoriteFragment () { // Register your subscriber in constructor EventBus.getDefault().register(this); } @Override public void onDestroy() { // UnRegister your subscriber in onDestroy EventBus.getDefault().unregister(this); } @Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(@NonNull Data data) { // Get data from FragmentA List<Boolean> markList = data.getMarkList(); if (markList != null && markList.size()>0) { for (int i = 0; i < markList.size(); i++) { Log.i("LOG", "list " + i + ": " + markList.get(i)); } } } }