ID类型的预期资源

时间:2017-08-20 11:57:38

标签: android kotlin anko

我正在使用ANKO来构建简单的项目。当我尝试为EditText设置ID时,我会收到以下错误。

  

确保传递给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
        }
    }
}
}

click here to view an error image format

3 个答案:

答案 0 :(得分:1)

您应该将ID传递为R.id.some_name

你不能传递整数

示例

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

希望有所帮助:)

答案 1 :(得分:1)

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

首先在//... "address" => array( array( "line1"=>"abc", "city"=>"abc", // ... ), ) 下创建一个文件ids.xml,然后为res/values/添加id

EditText

现在将其用作<?xml version="1.0" encoding="utf-8"?> <resources> <item name="edit_text" type="id"/> </resources> EditText

id

答案 2 :(得分:1)

您可以使用ID引用(R.id.something)或从-16777215-1的否定整数(并忽略警告)。

使用自API 17以来可用的View.generateViewId()方法,也可以为您生成合适的负整数。源代码可用here。您必须自己记住生成的值。

在其他答案中介绍了生成R.id

  

我正在尝试做同样但却出错

这段视频是在一年多前发布的,而lint当时没有就Kotlin代码发出警告。