Как использовать 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 . Может быть, ваш вид переключается, но поскольку код для обоих макетов точно такой же, вы не можете его различить.

Другие вопросы по тегам