Макет ограничения возвращает неверный идентификатор в иерархии - PullRequest
0 голосов
/ 25 декабря 2018

Я работаю над макетом Constraint, в котором есть две кнопки изображения с разными идеями, расположенными рядом друг с другом, например:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


<!-- here are some views -->

<ImageButton
    android:id="@+id/openCamera"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="@null"
    android:clickable="true"
    android:contentDescription="@string/camera_button"
    android:focusable="true"
    android:scaleX="3.7"
    android:scaleY="3.7"
    android:adjustViewBounds="true"
    app:layout_constraintBottom_toTopOf="@id/text"
    app:layout_constraintEnd_toStartOf="@id/openGallery"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/logoText"
    app:srcCompat="@drawable/ic_camera_icon" />

<ImageButton
    android:id="@+id/openGallery"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="@null"
    android:adjustViewBounds="true"
    android:clickable="true"
    android:contentDescription="@string/gallery_button"
    android:focusable="true"
    android:scaleX="3.7"
    android:scaleY="3.7"
    app:layout_constraintBottom_toTopOf="@id/text"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@id/openCamera"
    app:layout_constraintTop_toBottomOf="@id/logoText"
    app:srcCompat="@drawable/ic_gallery_icon" />

<!-- other views -->

</android.support.constraint.ConstraintLayout>

проблема в том, что когда я нажимаю кнопки эфира, я получаю id второй кнопки (например, когда я меняю их положение, я всегда получаю вторую id ).

как я могу решить эту проблему?

- я попытался:

  • не реализован интерфейс View.OnClickListener и проверил, что по-прежнему возникает та же проблема.

  • Я работал над относительным макетом, но у него была большая иерархия, поэтому я переключился на макет ограничения.

код Java:

@Override
protected void onCreate(Bundle savedInstanceState) {
    ImageButton openCameraButton = (ImageButton) findViewById(R.id.openCamera);
    ImageButton openGalleryButton = (ImageButton) findViewById(R.id.openGallery);
    openCameraButton.setOnClickListener(this);
    openGalleryButton.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.openCamera:
            someMethod();
            break;
        case R.id.openGallery:
            antherMethod();
            break;
        default:
            Log.v(TAG, "HOW YOU GET THERE!!!");
            break;
    }
}

чтоя получаю из режима отладки: введите описание изображения здесь

Ответы [ 3 ]

0 голосов
/ 25 декабря 2018

Это потому, что метод обратного вызова onClick связан с первой кнопкой.Удалить строку android: onClick = "onClick" из xml

0 голосов
/ 25 декабря 2018

Теперь этот ответ работает для меня на ConstrainLayout

, что я сделал, добавил ширину больше 0 (, что здесь 100 ) для кнопки Изображение.не знаю почему, но это работает сейчас !!!

<ImageButton
    android:id="@+id/openCamera"
    android:layout_width="100dp"
    android:layout_height="0dp"
    android:background="@null"
    android:clickable="true"
    android:contentDescription="@string/camera_button"
    android:focusable="true"
    android:scaleX="3.7"
    android:scaleY="3.7"
    android:adjustViewBounds="true"
    app:layout_constraintBottom_toTopOf="@id/text"
    app:layout_constraintEnd_toStartOf="@id/openGallery"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/logoText"
    app:srcCompat="@drawable/ic_camera_icon" />

<ImageButton
    android:id="@+id/openGallery"
    android:layout_width="100dp"
    android:layout_height="0dp"
    android:background="@null"
    android:adjustViewBounds="true"
    android:clickable="true"
    android:contentDescription="@string/gallery_button"
    android:focusable="true"
    android:scaleX="3.7"
    android:scaleY="3.7"
    app:layout_constraintBottom_toTopOf="@id/text"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@id/openCamera"
    app:layout_constraintTop_toBottomOf="@id/logoText"
    app:srcCompat="@drawable/ic_gallery_icon" />

в надежде, если у кого-то есть лучший ответ или решение этой проблемы.

0 голосов
/ 25 декабря 2018

я видел этот код

<ImageButton
    android:id="@+id/openCamera"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="@null"
    android:clickable="true"
    android:contentDescription="@string/camera_button"
    android:focusable="true"
    android:onClick="onClick"
    android:scaleX="3.7"
    android:scaleY="3.7"
    android:adjustViewBounds="true"
    app:layout_constraintBottom_toTopOf="@id/text"
    app:layout_constraintEnd_toStartOf="@id/openGallery"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/logoText"
    app:srcCompat="@drawable/ic_camera_icon" />

попробуйте удалить эту строку

android:onClick="onClick"

Надеюсь, эта помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...