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

Android 是否可以为不同片段中的浮动操作按钮设置不同的操作?,android,android-fragments,android-viewpager,floating-action-button,Android,Android Fragments,Android Viewpager,Floating Action Button,我正在工作或是在一个应用程序中,我在viewpager和浮动动作按钮(fab)中有4个片段。当我点击fab时,会出现3个子选项卡。它们中的每一个都启动了不同的活动,用户可以在其中搜索来自不同片段的数据。有没有可能设置fab,这样当我在第一个片段中单击它时,它会打开一个在这个片段中搜索的活动,onClick inside second-search for second等等。问题是,现在当我在某个片段中单击sub fab时,我也可以从另一个片段中搜索数据,这有点奇怪。我知道这个问题有点奇怪,如果有

我正在工作或是在一个应用程序中,我在viewpager和浮动动作按钮(fab)中有4个片段。当我点击fab时,会出现3个子选项卡。它们中的每一个都启动了不同的活动,用户可以在其中搜索来自不同片段的数据。有没有可能设置fab,这样当我在第一个片段中单击它时,它会打开一个在这个片段中搜索的活动,onClick inside second-search for second等等。问题是,现在当我在某个片段中单击sub fab时,我也可以从另一个片段中搜索数据,这有点奇怪。我知道这个问题有点奇怪,如果有什么不清楚的地方,我会进一步解释。

你们可以在浮动动作按钮的onclick方法中检查当前打开的片段并调用它


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

您可以将FAB按钮公开,并在每个片段中实现onClick listener。 您应该重写setUserVisibleHint并将代码放在Resume上,以便getActivity()不会返回null。Fab按钮在不同的片段中将有不同的操作

下面是一个示例,在每个片段中,当您需要Fab click listener时:

@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
        }
    });
}