是否可以在不同的片段中为浮动操作按钮设置不同的操作?

Is it possible to set different actions for floating action button in differet fragments?

我正在工作或我在 viewpager 和浮动操作按钮 (fab) 中有 4 个片段的应用程序。当我点击 fab 时,会出现 3 个 subfab。他们每个人都开始不同的活动,用户可以在其中搜索来自不同片段的数据。是否可以设置 fab 以便如果我在第一个片段中单击它,它会打开一个 activity 用于在该片段内搜索,在第二个内单击 - 搜索第二个等等。问题是现在,当我在某个片段中时单击 sub fab,我也可以从另一个片段中搜索数据,这有点奇怪。我知道问题有点奇怪,如果有什么不清楚我会进一步解释

您可以查看当前打开哪个fragment的浮动操作按钮的onclick方法并调用它。

FragmentManager 上调用 findFragmentById() 并确定哪个片段在您的 R.id.frameTitle 容器中。

您可以制作 FAB 按钮 public 并在每个片段中实现 onClick 侦听器。 您应该覆盖 setUserVisibleHint 并将您的代码放在 onResume 中,这样 getActivity() 就不会 return 为空。 Fab按钮在不同的片段中会有不同的动作。

这是一个示例,当您需要 Fab 点击监听器时,在每个片段中:

@Override
public void setUserVisibleHint(boolean visible)
{
    super.setUserVisibleHint(visible);
    if (visible && isResumed())
    {            
        onResume();
    }
}

 @Override
public void onResume()
{
    super.onResume();
    if (!getUserVisibleHint())
    {
        return;
    }

    MainActivity mainActivity = (MainActivity)getActivity();
    mainActivity.fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          //Do what you want
        }
    });
}