带有 id 和 activity_main 的 kotlin 中未解析的引用

Hug*_*ohm 19 java android kotlin

我实际上是在 kotlin 中创建一个新应用程序,以在带有格式信息的框中显示一个 xml 文件

问题是,当我构建应用程序时,有activity_main,即返回“未解析引用”的id

Unresolved reference: id
Unresolved reference: id
Run Code Online (Sandbox Code Playgroud)

这里是 MainActivity.kt

package com.example.instantsystem

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.ListView
import java.io.IOException

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val listView = findViewById<ListView>(id.listView)
        var employees: List<Employee>? = null
        try {
            val parser = XmlPullParserHandler()
            val istream = assets.open("employees.xml")
            employees = parser.parse(istream)

            val adapter = ArrayAdapter(this, R.layout.simple_list_item_1, employees)
            listView.adapter = adapter

        } catch (e: IOException) {
            e.printStackTrace()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.instantsystem.MainActivity">

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

    </ListView>

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

我不明白错误,我导入了包并在xml中定义了它。我的代码有什么问题?

Sko*_*pEN 83

在我的情况下,删除import android.R解决了这个问题。

  • 工作起来就像一个魅力。这有什么原因吗? (5认同)
  • 浪费了2个小时该死的固体 (3认同)
  • 同样在这里。删除“import android.R”解决了这个问题。 (2认同)

Pra*_*sai 15

import android.R从可能自动导入的导入中删除。


Sam*_*Sam 11

在最新版本上kotlin-android-extensions需要在内部应用build.gradle(模块..)

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions'
}
Run Code Online (Sandbox Code Playgroud)


小智 6

正如@SkorpEN 提到的那样,对我来说,删除import android.R也解决了这个问题。

不知从何添加import android.R的原因是,如果你将 java 代码粘贴到 Kotlin 中,它会自动转换为 Kotlin,有时这个import android.R也会自动添加。


小智 6

就我而言;我MainActivity.kt在自动导入中编辑了代码,所以我必须添加:

import com.package.name.R 
Run Code Online (Sandbox Code Playgroud)


Dan*_*dez 5

就我而言,我不小心删除了包声明,因此添加package your.package.name为我修复了它。