Автоматическое отключение / включение прослушивателя на основе видимости его фрагмента
В приложении для Android у меня есть два фрагмента :
-
Фрагмент с ListView элементов
Фрагмент с ImageView
Через callback onListItemSelected, когда пользователь нажимает на элемент ListView, MainActivity помещает ImageView в стек, и фрагмент с изображением появляется на экране. На этом этапе я ожидал бы, что, поскольку фрагмент ListView больше не виден, любые события, связанные с этот осколок больше не стрелял. Но это не так. Если я коснусь ImageView, прослушиватели элементов ListView по-прежнему будут работать.
Два вопроса:
-
Есть ли способ автоматически включать / отключать прослушиватели на основе их видимости фрагментов?
-
Если нет, я думаю, что путь к этому будет состоять в том, чтобы отключить представление фрагмента ListView, а затем снова включить его, когда нажата задняя кнопка. Как я могу захватить событие backButton в MainActivity, чтобы повторно включить ранее отключенное представление?
Public class MainActivity расширяет реализацию FragmentActivity ListViewFragment.Обратные вызовы {
[...]
public void onListItemSelected(String str) { FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.addToBackStack(null); fragmentTransaction.replace(R.id.listView, f); fragmentTransaction.commit(); // disable listView //View lw = getSupportFragmentManager().findFragmentById(R.id.listView).getView().findViewById(R.id.my_listView); //lw.setEnabled(false); }
1 ответ:
Вы можете попробовать две вещи
Установите ImageView для использования сенсорных событий.
ImageView.setClickable(true);
При нажатии на новый фрагмент отключите события касания в ListView.
ListView.setClickable(false);
Если вы хотите знать, как узнать, когда удаляется фрагмент с ImageView, попробуйте setTargetFragment. Взгляните сюда: https://stackoverflow.com/a/13733914/935421