0

我正在使用ANKO构建简单的项目。当我尝试为 an 设置 id时,出现EditText以下错误。

确保传递给 API 的资源 ID 是正确的类型;例如,呼叫Resources.getColor(R.string.name)是错误的。

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import org.jetbrains.anko.*

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    relativeLayout {
        editText{
            id = 1
        }
    }
}
}

单击此处查看错误图像格式

4

3 回答 3

1

你应该传递一个 id 作为R.id.some_name

你不能在上面传递整数

示例

editText {
        id = R.id.userNameEditText
        hintResource = R.string.create_user_hint_username
        textSize = 24f
      }

希望能帮助到你:)

于 2017-08-20T12:07:04.193 回答
1

您应该为视图的 id 传递一个正确的唯一资源 id,而不仅仅是任何 int 值。

ids.xml首先在下创建一个文件并为您res/values/添加一个:idEditText

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="edit_text" type="id"/>

</resources>

现在将其用作EditText id

relativeLayout {
        editText{
            id = R.id.edit_text
        }
    }
于 2017-08-20T13:22:58.790 回答
1

您可以使用 id 引用 ( R.id.something) 或负整数 from -16777215to -1(并忽略警告)。

也可以使用自 API 17 起提供的方法为您生成合适的负整数View.generateViewId()。源代码可在此处获得。您必须自己记住生成的值。

生成 anR.id包含在其他答案中。

我正在尝试做同样的事情但出现错误

该视频是一年多前发布的,当时 lint 并没有就 Kotlin 代码向您发出警告。

于 2017-08-20T14:11:05.753 回答