2

В одном Android приложения, у меня есть два фрагмента:Автоматическое отключение/включение слушателя на основе его фрагмента видимости

  1. фрагмент с ListView элементов

  2. фрагмент с ImageView

Через callback onListItemSelected, когда пользователь нажимает на элемент ListView, MainActivity выталкивает ImageView в стек, а фрагмент с изображением появляется на экране. На этом этапе я ожидал бы, что, поскольку фрагмент ListView больше не виден, все события, связанные с этим фрагментом, больше не запускаются. Это не тот случай. Если я коснусь ImageView, слушатели элементов ListView все еще срабатывают.

Два вопроса:

  1. Есть ли способ автоматически включить/отключить слушателей на основе их видимости фрагмента?

  2. Если нет, я предполагаю, что путь к отключению отображения списка ListView и последующему включению его при нажатии кнопки BackButton. Как я могу захватить событие backButton в MainActivity для повторного включения ранее отключенного представления?

общественный класс MainActivity расширяет FragmentActivity реализует ListViewFragment.Callbacks {

[...]

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

     } 

ответ

2

Вы можете попробовать две вещи

  1. Установите ImageView для использования событий касания.

    ImageView.setClickable(true);

  2. При нажатии на новый фрагмент отключить сенсорные события на ListView.

    ListView.setClickable(false);

Если вы хотите знать, как знать, когда фрагмент с ImageView удаляется попробовать setTargetFragment. Посмотрите здесь: https://stackoverflow.com/a/13733914/935421

+0

Я решил использовать первое решение, так как мне не удалось заставить второго работать. ImageView теперь не доступен для кликов. Однако я заметил что-то странное. Если я коснусь ImageView несколькими пальцами, иногда эта информация появляется в LogCat: «ACTION_DOWN перед UnsetPressedState. Вызывается mUnsetPressedState.run()». Однако, похоже, это не создает какой-либо проблемы. – Javide

 Смежные вопросы

  • Нет связанных вопросов^_^