В одном Android приложения, у меня есть два фрагмента:Автоматическое отключение/включение слушателя на основе его фрагмента видимости
фрагмент с ListView элементов
фрагмент с ImageView
Через callback onListItemSelected, когда пользователь нажимает на элемент ListView, MainActivity выталкивает ImageView в стек, а фрагмент с изображением появляется на экране. На этом этапе я ожидал бы, что, поскольку фрагмент ListView больше не виден, все события, связанные с этим фрагментом, больше не запускаются. Это не тот случай. Если я коснусь ImageView, слушатели элементов ListView все еще срабатывают.
Два вопроса:
Есть ли способ автоматически включить/отключить слушателей на основе их видимости фрагмента?
Если нет, я предполагаю, что путь к отключению отображения списка 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); }
Я решил использовать первое решение, так как мне не удалось заставить второго работать. ImageView теперь не доступен для кликов. Однако я заметил что-то странное. Если я коснусь ImageView несколькими пальцами, иногда эта информация появляется в LogCat: «ACTION_DOWN перед UnsetPressedState. Вызывается mUnsetPressedState.run()». Однако, похоже, это не создает какой-либо проблемы. – Javide