好吧,我有一个活动(带有ViewPager和FAB(
在ViewPager中有一个NotesFragment(片段仅包含RecyclerView(
我有一个片段称为AddNoteFragment,它完成添加和显示现有注释的工作:1(从活动fab打开AddNoteFragment添加注释,这是合乎逻辑的,2(从回收器视图中,单击项目将打开AddNoteFragment,其中包含单击的项目的详细信息
问题:当我打开AddNoteFragment以正确显示令人兴奋的笔记时,如何在活动中隐藏FAB?我知道的唯一方法是使用界面并将其传输,但这看起来像RecyclerViewAdapter -> NotesFragment -> ViewPagerAdapter -> Activity,看起来很奇怪。
虽然我认为使用界面是一个很好的方法,但你可能想看看 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*/);