안전 인수 플러그인을 활성화 한 후 데이터 바인딩에서 루트 뷰를 가져올 수 없음


15

dataBinding을 사용하여 Android 앱에서 작업 중이며 현재 safe-args 플러그인을 추가하려고하지만 플러그인을 활성화 한 후 더 이상 binding.root를 통해 루트보기를 얻을 수 없습니다-Android Studio에서 오류가 발생합니다.

Unresolved Reference
None of the following candidates is applicable because of a receiver type mismatch:
* internal val File.root: File defined in kotlin.io

데이터 바인딩과 안전 장치를 함께 사용하여 멋지게 플레이하려면 어떻게해야합니까?

코드 스 니펫이 Kotlin에있는 동안 Java 답변을 기쁘게 생각합니다. Java에는 익숙하지 않지만 쉽게 읽고 번역 할 수 있습니다.

오류 메시지와 "안전한 인수"를 인터넷 검색하여 같은 문제를 가진 다른 사람을 찾을 수 없었습니다. https://developer.android.com/guide/navigation/navigation-pass-data 에서 Android 문서에 나열된 클래스 경로로 먼저 시도했습니다.

classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.1.0"

그런 다음 사용을 제안하는 자습서를 찾았습니다.

classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha07"

둘 다 같은 문제가있었습니다 : binding.root는 플러그인이 활성화 된 상태에서 오류를 일으켰습니다.

내 조각에 대한 내 onCreateView ()입니다. Safe-Args가 활성화되어 있지 않으면 반환 라인이 제대로 작동하고 활성화되면 작동하지 않습니다

   override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    binding = DataBindingUtil.inflate(inflater, R.layout.fragment_encoder, container, false)

    return binding.root
}

이 문제를 해결하거나 이해하는 데 도움을 주시면 감사하겠습니다.

답변:


11

나는 같은 문제가 있는데, 그것은 너무 유선되어 있지만 레이아웃의 이름을 바꾸면 다시 작동합니다. : D


2
이상하게도 트릭을 수행했습니다. 감사합니다. 같은 문제로 여기에 오는 다른 사람들에게는 binding.root를 인식하지 못하는 클래스와 관련된 레이아웃 xml 파일의 이름을 refactor> rename>으로 변경해야했습니다. 또한 바인딩에 대해 자동 생성 된 클래스 유형의 이름을 적절히 바꿔야합니다. 일단 그렇게하면 모든 것이 올바르게 작동했으며 원래 이름으로 다시 이름을 바꿀 수도있었습니다. 이것이 프로젝트 재건에 어떤 영향을 주 었는지 잘 모르겠습니다.
Hannah S.

또한 안전 인수 문제로 인해 여기에 있다면 공유 ViewModel 및 LiveData를 대신 사용하고 싶을 수도 있습니다. 그것이 내가 지금 사용하고있는 이유입니다. 안전 장치에 갇혔을 때 계속 진행해야했기 때문에 훨씬 더 행복합니다
Hannah S.

24

나는 같은 문제가 있고 마침내 시도했다

파일-> 유효하지 않은 캐시 / 다시 시작

그것은 나를 위해 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.