好吧,我有一个活动(带有ViewPager和FAB)
在ViewPager中有一个NotesFragment(片段仅包含RecyclerView)
我有一个Fragment调用AddNoteFragment来完成添加和显示现有Note的工作: 1)从Activity fab中打开AddNoteFragment以添加注释,这是合乎逻辑的, 2)从RecyclerView中,单击项目将打开AddNoteFragment,其中包含单击项目的详细信息
问题:当我打开AddNoteFragment正确显示令人兴奋的笔记时,如何在Activity上隐藏FAB?我知道的唯一方法是使用接口并向上传输它,但这看起来像RecyclerViewAdapter-> NotesFragment-> ViewPagerAdapter-> Activity,看起来很奇怪。.
答案 0 :(得分:0)
虽然我认为使用接口是一种很好的方法,但是您可能想看一下EventBus(https://github.com/greenrobot/EventBus),它的工作原理与BroadcastReceiver类似,所有您需要做的就是等待事件在您的活动上,并随时隐藏/显示它。以下是您必须添加到活动中的代码:
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(Boolean show) {if (show){
fab.show()
}else{
fab.hide()
}};
然后,只要需要,您只需致电
EventBus.getDefault().post(/* true or false*/);