Как использовать viewswitcher с одинаковыми идентификаторами в обоих макетах
Я использую вид переключения в моем проекте.
В моем XML я создал 2 макета с одинаковыми идентификаторами. После того, как я переключаю свое представление, я не могу переключиться на предыдущее представление, потому что я использую одинаковые идентификаторы в обоих макетах.
Теперь, как я могу использовать один слушатель в коде Java для обоих макетов в переключателе представления. Я не хочу создавать другой идентификатор и создать еще один слушатель для переключения снова.
Мой xml как ниже.
<ViewSwitcher xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/profileSwitcher"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/hello_world" />
<Button
android:id="@+id/switchBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="Switch" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="@string/hello_world" />
<Button
android:id="@+id/switchBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="Switch" />
</RelativeLayout>
</ViewSwitcher>
Мой код Java выглядит следующим образом
final ViewSwitcher switcher = (ViewSwitcher) findViewById(R.id.profileSwitcher);
Button btn = (Button) findViewById(R.id.switchBtn);
btn.setOnClickListener(new OnClickListener() {
private boolean switchCheck;
public void onClick(View v) {
new AnimationUtils();
switcher.setAnimation(AnimationUtils.makeInAnimation(getApplicationContext(), true));
if (!switchCheck) {
switcher.showNext();
switchCheck = true;
} else {
switcher.showPrevious();
switchCheck = false;
}
}
});
Пожалуйста помоги..
2 ответа
Создайте разные идентификаторы для родительского относительного макета в XML.
А затем в java-файле проверьте, какая кнопка компоновки используется. используя метод
шаг 1)
RelativeLayout r1 = RelativeLayout findviewbyId(R.id.rl1)
RelativeLayout r2 = RelativeLayout findviewbyId(R.id.rl2)
шаг 2)
if button.getParent equals to R1 then ...
else .....
Просто попробуйте изменить текст в любой из кнопок или textView . Может быть, ваш вид переключается, но поскольку код для обоих макетов точно такой же, вы не можете его различить.