Определение id (@ + id) в части ограничения ошибки ConstraintLayout - PullRequest
0 голосов
/ 13 ноября 2018

при первом определении идентификатора (@ + id) в части ограничения (например, app:layout_constraintBottom_toTopOf) я получаю сообщение об ошибке "невозможно разрешить символ"

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        app:layout_constraintBottom_toTopOf="@+id/tv2" />

    <TextView
        android:id="@id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</android.support.constraint.ConstraintLayout>

см. Снимок экрана:

enter image description here

В Gradle у меня есть макет ограничения 1.1.3 и версия Android Studio 3.2.1. Я недавно обновил его со старой версии:

implementation 'com.android.support.constraint:constraint-layout:1.1.3'

приложение работает правильно без каких-либо ошибок, но ошибка отображается в окне макета Android Studio.

аннулирование кэшей, перестройка и изменение версии макета ограничения. НИКОГДА из них не помогает!

в Java-классе R.id.tv2 работает правильно, и когда я контролирую + щелкаю по нему, я вижу его поле в R классе. редактор использует другой класс для идентификаторов, который отличается от класса R в коде Java?

1 Ответ

0 голосов
/ 13 ноября 2018

Просто используйте @+id/ везде: символ «плюс» указывает, что это новый идентификатор ресурса, а инструмент aapt создаст новое целое число ресурса в классе R.java, если его еще не существует ( документы )

...