PlaceHolderView
PlaceHolderView copied to clipboard
Can not annotate with R constants
Having strange bug: Trying to use it like this
@Layout(R.layout.section_item)
class SectionPlaceholder(private val section : Section) {
@View(R.id.title_textView)
lateinit var tvTitle: TextView
@View(R.id.content_textView)
lateinit var tvContent: TextView
@Resolve
fun onResolve() {
tvTitle.text = section.title
tvContent.text = section.content
}
}
But Studio underlines all R.layout/R.id usages and says that An annotation argument must be a compile-time constant. If I try to compile, I get:
error: incompatible types: <null> cannot be converted to int
@com.mindorks.placeholderview.annotations.Layout(value = null)
^
If I use generated constants it fails with runtime exception (res not found)
@Layout(0x7f0f0023)
class SectionPlaceholder(private val section : Section) {
@View(0x7f0c0071)
lateinit var tvTitle: TextView
@View(0x7f0c0020)
lateinit var tvContent: TextView
@Resolve
fun onResolve() {
tvTitle.text = section.title
tvContent.text = section.content
}
}
Used versions:
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.mindorks.android:placeholderview:1.0.3'
kapt 'com.mindorks.android:placeholderview-compiler:1.0.3'
If I use old version (0.7.3) I have the same issue Used plugins:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
kotlin version: 1.2.51. Everything works with usual RecyclerView
did you ever get this working? i'm surprised no one else has mentioned this issue since it immediately happened when i tried to use the project.
No I decided to use vanilla RecyclerView in that project. Maybe issue was caused by multi module architechture, I don't know
I have the same issue
has anyone fixed this issue yet?
has anyone fixed this issue yet?
Cannot use an annotation in library module to bind to a resource in app module. Because, All of library will be build and process annotation before build app module. So that, the resource id always is 0. Another workaround: Step 1: Disable all of libraries that poiting to resource: Butterknife, PlaceHolderView,... Step 2: Build app module and copy R.java to the same package name in library module Step 3: Reenable above libraries and then rebuild
has anyone fixed this issue yet?
Cannot use an annotation in library module to bind to a resource in app module. Because, All of library will be build and process annotation before build app module. So that, the resource id always is 0. Another workaround: Step 1: Disable all of libraries that poiting to resource: Butterknife, PlaceHolderView,... Step 2: Build app module and copy R.java to the same package name in library module Step 3: Reenable above libraries and then rebuild
Thank you sir. This method work for me. But AS now not show R.java. Need decompile apk and get R.java file. And after some changes in res files AS change some id rebuild and will be crashed (
Found a working solution. Change module lib to dynamic future module.