Можно ли установить разные действия для плавающей кнопки действия в разных фрагментах?

Я работаю или приложение, в котором у меня есть 4 фрагмента в viewpager и кнопка с плавающим действием (fab). Когда я нажимаю на fab, появляются 3 субфаба. Каждый из них запускает разные действия, в которых пользователь может искать данные из разных фрагментов. Можно ли настроить fab так, чтобы, если я нажму на него, пока я нахожусь в первом фрагменте, он открыл действие для поиска внутри этого фрагмента, onClick внутри второго - поиск второго и т. д. Проблема в том, что теперь щелчок по суб fab, пока я нахожусь в каком-то фрагменте, я могу искать данные и из другого фрагмента, и это немного странно. Понимаю, вопрос какой-то странный, если что-то непонятно, поясню дальше


person Yusuf Abdullaev    schedule 04.11.2015    source источник


Ответы (2)


Вы можете сделать кнопку FAB общедоступной и реализовать прослушиватель onClick в каждом фрагменте. Вы должны переопределить setUserVisibleHint и поместить свой код onResume, чтобы getActivity() не возвращал значение null. Кнопка 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
        }
    });
}
person Djordje Tankosic    schedule 07.11.2015

Вы можете проверить метод onclick кнопки с плавающим действием, какой фрагмент в данный момент открыт и вызвать его.

Вызовите findFragmentById() на FragmentManager и определите, какой фрагмент находится в вашем R.id.frameTitle контейнере.

person Vishavjeet Singh    schedule 04.11.2015