如何从子片段中隐藏 FAB



好吧,我有一个活动(带有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*/);

最新更新