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