【问题标题】:Android Studio: A real rookie problem with my buttonAndroid Studio:我的按钮真正的菜鸟问题
【发布时间】:2020-12-09 19:25:30
【问题描述】:

我不知道为什么,但我得到了这个错误:

e: C:\Users\User\AndroidStudioProjects\StorageManagementTheThird\app\src\main\java\com\example\storagemanagementthethird\AddItemActivity.kt: (15, 35): 类型推断失败: 没有足够的信息来推断参数T in fun findViewById(p0: Int): T!

在这段代码中:


class AddItemActivity: AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.add_item)


        val addItemSubmitButton = findViewById(R.id.addItemSubmitButton)

        addItemSubmitButton.setOnClickListener {

            val editTextItemName: EditText = findViewById(R.id.editTextItemName)

            //alles wat we aanpassen in storage en opslaan
            val database = getSharedPreferences("database", Context.MODE_PRIVATE)
            database.edit().apply {
                putString("savedItemName", editTextItemName.text.toString())
            }.apply()

        }
    }
}

如果可以的话请帮帮我:)

【问题讨论】:

标签: android android-studio kotlin button


【解决方案1】:

你应该改变这一行

val addItemSubmitButton = findViewById(R.id.addItemSubmitButton)

如下图

val addItemSubmitButton = findViewById<View>(R.id.addItemSubmitButton)

【讨论】:

    【解决方案2】:

    findViewById 接受一个类型,因此它可以返回正确的视图类型——在这种情况下,您可能应该使用findViewById<Button>,因为这就是它的意思,但这并不重要,因为您可以在任何类型的View上设置点击监听器

    如果您实际上在val 声明中指定了类型,例如val addItemSubmitButton: Button,那么编译器可以推断findViewById 调用的类型,并且您不需要菱形括号中的类型(它将显示为灰色,您将收到删除它的建议)。这就是为什么您的 editTextItemName 查找很好 - 您正在为那个指定类型

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 2012-07-22
      • 2021-12-04
      • 1970-01-01
      相关资源
      最近更新 更多