만족스러운 답을 얻지 못했습니다. 여기 내 데이터 바인딩 지식을 요약 한 팁이 있습니다.
데이터 바인딩 문제 해결을위한 팁
최신 정보
더 정확한 오류 와 제안 을 얻으려면 Android Studio 및 Gradle 플러그인 버전을 최신 버전으로 업데이트하는 것이 좋습니다. AS 3.2 버전 이후에는 많은 문제가 발생하지 않았기 때문입니다.
참조 안드로이드 스튜디오 최신 및 최신 Gradle을 플러그인 .
Orignal 솔루션
이 답변을 읽은 후에 는 클래스 및 데이터 변수 모두에 대한 데이터 바인딩 자동 생성 문제 에 갇히지 않을 것 입니다.
이 점을 하나씩 확인하십시오. 이들 중 어느 것이 든 작업을 완료 할 수 있습니다. 마지막 포인트 3은 정말 중요하므로 놓치지 마세요.
1. 데이터 바인딩이 활성화되었는지 확인
에서 데이터 바인딩을 활성화 해야합니다 build.gradle
. 그렇지 않은 경우 이것을 추가하고 Sync .
android {
...
dataBinding {
enabled = true
}
...
}
2. 레이아웃이 바인딩 레이아웃으로 변환되었는지 확인합니다.
이제 데이터 바인딩 클래스를 생성하려면 데이터 바인딩 ( 태그)으로 래핑xml layout
해야합니다 <layout
. 이 같은.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>
</layout>
이 검사와 함께 바인딩 변수 이름이 뷰 모델 클래스에서와 같이 올바른지 확인합니다.
3. 자동 생성 된 바인딩 클래스 이름?
데이터 바인딩 클래스는 바인딩 레이아웃을 만든 후에 생성해야합니다.
레이아웃 이름이 스네이크 케이스 인 경우 activity_main.xml
데이터 바인딩 클래스가 와 같은 카멜 케이스 로 생성됩니다 ActivityMainBinding
.
4. 가져 오기 제안을 볼 수 없습니까?
입력 할 때 때때로 ActivityMai...
, 그것은 제안을 표시하지 않습니다 그 경우에, 수동으로 가져 오기 .
import <yourpackage>databinding.ActivityMainBinding;
5. 빌드 실패 Logcat 읽기
빌드가 실패하면 바인딩 클래스와 레이아웃의 새 변수가 생성되지 않습니다. 그래서 일단 만들기 프로젝트 로 Ctrl + F9 (빌드> 만들기 프로젝트) .
- 빌드가 실패하면 오류가 무엇인지 확인합니다. 일반적으로 레이아웃 필드에 오류가 있습니다. 오류 로그에 문제가있는 오류 줄 번호가 표시됩니다.
- 바인딩이 실패 하면 구문 오류 또는 가져 오기 누락과 같은 어리석은 오류가 발생할 수 있습니다 . 이 경우 바인딩 클래스의 오류로 가득 찬 logcat이 표시됩니다. 그러나 적절한 문제 를 찾으 려면 완전한 logcat 을 읽어야 합니다.
6. 최근에서 프로젝트를 닫고 엽니 다.
Rebuild
/ Make
프로젝트 보다 시간이 훨씬 적게 걸리기 때문에 항상 이렇게합니다 .
- 파일> 프로젝트 닫기에서 프로젝트 닫기
- 최근에서 다시 열기
참고 내가 선호 닫기 열기 에서 최근 이보다 훨씬 적은 시간이 걸리기 때문에 다시 작성 / 다시 시작 IDE를 .
7. 프로젝트 재 구축
여전히 클래스가 생성되지 않으면. (때때로 레이아웃 파일을 붙여 넣으면 발생합니다). 그런 다음 ( Not Build 또는 Make project ) 에서 프로젝트 를 다시 빌드하십시오 . 데이터 바인딩 클래스를 생성합니다. ( Rebuild는 나를 위해 Magic을 사용합니다. )Build> Rebuild
8. 최신 Android Studio 보유
AS를 Android Studio 3.2로 업데이트 한 후 데이터 바인딩 자동 생성에서 많은 버그가 수정되는 것을 느꼈습니다. 따라서 최신 AS도 있어야합니다.
솔루션 <variables
<data>
<variable
name="item"
type="com.package.Model"/>
</data>
일반적으로 레이아웃에 변수를 넣으면 getter와 setter가 생성됩니다. 그리고 우리는 사용 binding.setItem(item);
하고 binding.getItem();
있지만, 그 방법을 볼 수없는 경우 다음 정보 아래를 참조하십시오.
1. 최근부터 프로젝트 닫기 및 열기
데이터 변수를 생성 한 경우- <variable
레이아웃 에서 데이터 바인딩 클래스에 setter 및 getter 가 표시되지 않으면 최근 항목에서 닫기 및 열기 프로젝트 .
2. 유형 변경 후 프로젝트 정리
<variable
레이아웃에서 일부 유형을 변경 하고 getter setter 유형이 변경되지 않으면 프로젝트 정리 ( Build> Clean Project
)
마지막 단어
마지막으로 여전히 바인딩 클래스가 생성되지 않으면 가장 강력한 무기가 있습니다. - 다시 시작 안드로이드 스튜디오 : D
- 첫째, 다시 시작하십시오. 다시 시작 하면 항상 바인딩 레이아웃의 변수가 생성됩니다.
- 작동하지 않으면 캐시 를 무효화하고 다시 시작하십시오 .
이것이 내 데이터 바인딩 오류를 해결하기 위해 내가하는 전부입니다. 추가 문제가 발생하면 여기에 의견을 남길 수 있습니다.
dataBinding.enabled
당신의 build.gradle에?