Intereting Posts
Lolipop устройство не открывается в genymotion Тайм-аут активности для HistoryRecord? Как опубликовать прогресс для синтаксического анализа большого json-файла с помощью GSON Kotlin on android: Не удается найти основной объединенный манифест. Что вызывает эту ошибку? Robotium – настройка продолжительности PAUSE в классе Sleeper Как указать конкретные ссылки RTL Класс BlackBerry эквивалентен AsyncTask? Как напрямую перемещать камеру в текущее местоположение в Google Maps Android API v2? Android: Самый простой способ сделать WebView отображением растрового изображения? JQuery Мобильный фиксированный footer перемещается, когда появляется клавиатура Проблемы рендеринга @ id / visible Android Studio Клавиатура не отображается, когда я нажимаю на edittextview в android? Как вы можете определить, когда был составлен макет? Android: вопрос о выставлении счетов в приложении Сохранять список или задавать в SharedPreferences

Щелчок по фрагменту вызывает активность за ним

Я предполагаю, что это что-то действительно простое, может быть, настройка в списке или фрагменте. Но я не мог найти решение для него пару часов. Итак, у меня есть listView, как это

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/content" android:layout_width="fill_parent" android:layout_height="fill_parent" android:isScrollContainer="true"> <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#fffafa" /> </RelativeLayout> 

Когда кто-то нажимает на элемент списка. Я заменяю его таким фрагментом

  FragmentManager manager = getSupportFragmentManager(); FragmentTransaction ft = manager.beginTransaction(); ft.replace(R.id.content, newFragment); ft.addToBackStack(null); ft.commit(); 

Если я нажму на элемент в списке, весь список будет заменен фрагментом (*), состоящим из кнопки и пары текстовых полей. Фрагмент правильно заменяет listView информацией об элементе. Когда я нажимаю назад, он правильно возвращает список.

Проблема в том, что если я нажму на фон *, он будет вести себя так, как если бы я щелкнул по списку, стоящему за ним, и приносит фрагмент об этом элементе на передний план. Я могу бесконечно щелкнуть по фону, чтобы принести другие фрагменты. Я могу вернуться в список, щелкнув назад, назад.

Почему этот фрагмент прозрачен? Как я могу это исправить?

Solutions Collecting From Web of "Щелчок по фрагменту вызывает активность за ним"

Я считаю, что проблема заключается в том, что метод replace не заменяет ListView . Он заменяет только другие фрагменты, находящиеся внутри контейнера. В этом конкретном случае их нет. Таким образом, вы существенно добавляете свой фрагмент поверх ListView потому что RelativeLayout позволяет представлениям быть друг на друга. Когда вы нажимаете на фрагмент, вы не полностью обрабатываете его, поэтому он переходит к базовому представлению, которое является ListView .

Простым, быстрым и грязным решением было бы получить объект ListView и либо удалить его из контейнера самостоятельно, либо установить его видимость в GONE . Лучшим решением было бы использовать ListFragment, который должен показывать ожидаемые результаты.

Я решил подобную проблему, добавив android:clickable="true" в элементе, который вел себя так, как будто он был «прозрачным». Сделав его кликабельным, убедитесь, что события щелчка были обработаны им, а не переданы в представления ниже.

Установите для свойства clickable значение true, чтобы событие click было потреблено только на фрагменте переднего плана.

  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> 

Итак, у меня была точно такая же проблема, я до сих пор не знаю причины, но убедитесь, что вы добавили андроид: clickable = "true" в roovView вашего макета второго фрагмента.

что-то вроде этого:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff" android:clickable="true" android:orientation="vertical"> .....any content for your item (2nd fragment)..... </LinearLayout>