注释:@EViewGroup - 注释参数必须是Android库模块中的编译时常量错误

问题描述 投票:1回答:1

我正在尝试将一些现有的应用程序代码拆分为一个android库模块。在将我的工作代码复制到模块目录时,我遇到了注释问题,其中行qazxswwicic与编写时错误的消息

注释参数必须是编译时常量

当完全相同的代码在app模块中工作时,我无法理解为什么这突然出现问题。两个模块gradle文件实现相同的依赖项,布局文件也是旧布局文件的副本。

查看文件:

@EViewGroup(R.layout.dialog_action_item)

布局文件:

import android.content.Context
import android.graphics.Typeface
import android.os.Build
import android.support.annotation.AttrRes
import android.support.v4.content.ContextCompat
import android.util.AttributeSet
import android.widget.FrameLayout
import com.lam.locationmapservicelib.R
import kotlinx.android.synthetic.main.dialog_action_item.view.*
import com.lam.locationmapservicelib.utils.ImageLoader
import com.lam.locationmapservicelib.utils.ViewManager
import com.lam.locationmapservicelib.views.dialog.DialogActionItemModel
import org.androidannotations.annotations.EViewGroup

@EViewGroup(R.layout.dialog_action_item)
open class DialogActionItem : FrameLayout {
    constructor(context: Context) : super(context)
    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context, attrs: AttributeSet?, @AttrRes defStyleAttr: Int) : super(context, attrs, defStyleAttr)

some methods..

}

摇篮:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="@dimen/dialog_button_size">

    <TextView
        android:id="@+id/buttonText"
        style="@style/Body1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginEnd="@dimen/padding_16"
        android:layout_marginStart="@dimen/padding_16"
        android:ellipsize="end"
        android:lines="1"
        android:textAlignment="center" />
</FrameLayout>

构建错误堆栈:

kapt 'org.androidannotations:androidannotations:4.4.0'
implementation 'org.androidannotations:androidannotations-api:4.4.0'

gradle和layout文件在与DialogActionItem类相同的模块(locationmapservicelib)中起作用。

任何帮助是极大的赞赏!

android annotations android-library android-annotations android-module
1个回答
1
投票

不幸的是,`e: ...\LocationMapService\locationmapservicelib\build\tmp\kapt3\stubs\debug\com\lam\locationmapservicelib\fragments\map\MapFragment.java:5: error: incompatible types: <null> cannot be converted to int @org.androidannotations.annotations.EFragment(value = null) ^ e: ...\LocationMapService\locationmapservicelib\build\tmp\kapt3\stubs\debug\com\lam\locationmapservicelib\views\dialog\Dialog.java:5: error: incompatible types: <null> cannot be converted to int @org.androidannotations.annotations.EViewGroup(value = null) ^ e: ...\LocationMapService\locationmapservicelib\build\tmp\kapt3\stubs\debug\com\lam\locationmapservicelib\views\dialog\views\DialogActionItem.java:5: error: incompatible types: <null> cannot be converted to int @org.androidannotations.annotations.EViewGroup(value = null)` 字段在Android库项目中不是常量,因此我们不能简单地将它们放入注释参数中。

有两种方法可以解决这个问题:

  • 使用R参数并传递一个字符串:resName
  • 使用ButterKnife Gradle Plugin在@EViewGroup(resName = "dialog_action_item")类中生成最终字段,并使用它们:R2

您必须为这两个版本的AndroidAnnotations添加配置。见@EViewGroup(R2.layout.dialog_action_item)

© www.soinside.com 2019 - 2024. All rights reserved.