Я использую ViewFlipper
, чтобы чередовать два одинаковых вида с анимацией.FindViewById возвращает неверный вид
xml этого ViewFlipper выглядит следующим образом.
<ViewFlipper
android:id="@+id/advise_viewflipper"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include android:id="@+id/product_select_one" layout="@layout/product_select_view" />
<include android:id="@+id/product_select_two" layout="@layout/product_select_view" />
</ViewFlipper>
Теперь в моем фрагменте я получить оба из них с ножом для масла и кокетливые их идентификаторы показывают, что они действительно две разных точки зрения.
currentViewId = currentView.getId();
otherViewId = otherView.getId();
Log.d("Compare", currentView.getId() + " " + otherView.getId());
Так что теперь внутри этих двух идентичных зрения является FlowLayout
с идентификатором advise_item_layout
. Однако, запрашивая этот вид от , оба изображения возвращают те же FlowLayout
.
Если я:
final FlowLayout itemLayout = ButterKnife.findById(currentView, R.id.advise_item_layout);
final FlowLayout otherLayout = ButterKnife.findById(otherView, R.id.advise_item_layout);
Log.d("item vs other layout", itemLayout.getId() + " " + otherLayout.getId());
Те же идентификаторы печатаются, даже если я прохожу другую точку зрения? То же самое можно использовать при использовании FindViewById для Android.
Я знаю, что FindViewById выполняет поиск по глубине и захватывает первое совпадение, но я четко указываю другое представление для поиска в? Итак, что я делаю неправильно и что будет исправить?
Вы сравниваете идентификаторы вида, и они одинаковы. Сами мнения могут быть разными. Проверьте саму ссылку, например. 'itemLayout == otherLayout' – laalto
Нет, у родителей FlowLayout есть разные идентификаторы. Поэтому я предполагаю, что они разные объекты в памяти. – Gooey
В любом случае идентификаторы, возвращаемые 'getId()', не обязательно должны быть уникальными, а в вашем случае они не являются. Вы не можете использовать идентификатор идентификатора ссылки. – laalto