【问题标题】:Error Trying to create App following guide on android studio 4.1 with Kotlin尝试使用 Kotlin 在 android studio 4.1 上创建应用程序时出错
【发布时间】:2020-10-31 09:40:28
【问题描述】:

按照指南:“使用 Kotlin 构建您的第一个应用程序”: https://developer.android.com/training/basics/firstapp/starting-activity#BuildIntent

Android Studio 4.1

直到“构建一个简单的用户界面”一切正常。

然后在完成“开始另一个活动”后出现错误“未解决的参考:editText”

  • 该错误首次出现在“构建意图”中

错误信息: e: C:\Users\Rodrigo\AndroidStudioProjects\MyFirstApp\app\src\main\java\com\example\myfirstapp\MainActivity.kt: (17, 52): 未解决的参考:editText

任务:app:mergeExtDexDebug

FAILURE:构建失败并出现异常。

  • 出了什么问题: 任务 ':app:compileDebugKotlin' 执行失败。

编译错误。查看日志了解更多详情

  • 尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

  • 通过https://help.gradle.org获得更多帮助

代码: src\main\AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myfirstapp">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyFirstApp"
        android:fullBackupContent="@xml/backup_descriptor">
        <activity android:name=".DisplayMessageActivity"
            android:parentActivityName=".MainActivity">
            <!-- The meta-data tag is required if you support API level 15 and lower -->
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity" />
        </activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

src\main\java\com\example\myfirstapp\DisplayMessageActivity.kt

package com.example.myfirstapp

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.provider.AlarmClock.EXTRA_MESSAGE
import android.widget.TextView

class DisplayMessageActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_display_message)
    }

    val message = intent.getStringExtra(EXTRA_MESSAGE)

    val textView = findViewById<TextView>(R.id.textView).apply {
        text = message
    }
}

src\main\java\com\example\myfirstapp\MainActivity.kt 错误在这里

package com.example.myfirstapp

import androidx.appcompat.app.AppCompatActivity
import android.content.Intent
import android.os.Bundle
import android.provider.AlarmClock.EXTRA_MESSAGE
import android.view.View
import android.widget.EditText

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun sendMessage(view: View) {
        val editText = findViewById<EditText>(R.id.editText)
        val message = editText.text.toString()
        val intent = Intent(this, DisplayMessageActivity::class.java).apply {
            putExtra(EXTRA_MESSAGE, message)
        }
        startActivity(intent)
    }
}

src\main\res\layout\activity_display_message.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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=".DisplayMessageActivity">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="TextView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

src\main\res\layout\activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:gravity="center"
        android:text="@string/edit_message"
        android:textAlignment="center"
        android:textSize="14sp"
        app:layout_constraintEnd_toStartOf="@+id/button"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:onClick="sendMessage"
        android:text="@string/button_send"
        app:layout_constraintBaseline_toBaselineOf="@+id/textView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/textView" />

</androidx.constraintlayout.widget.ConstraintLayout>

src\main\res\values\strings.xml

<resources>
    <string name="app_name">My First App</string>
    <string name="edit_message">Enter a message</string>
    <string name="button_send">Send</string>
</resources>

【问题讨论】:

标签: android kotlin


【解决方案1】:

按照“https://developer.android.com/training/basics/firstapp/building-ui”上的 Android 开发指南,我在使用 MyFirstApp 时遇到了同样的问题。

问题实际上在于该页面上示例中纯文本字段的 id,如图 5 中的布局视图所示。

该图中列出的 id 是“editTextTextPersonName”。 将 id 更改为“editText”并重新运行程序后,它在 Kotlin 中运行良好。

【讨论】:

    【解决方案2】:

    activity_main.xml 中没有EditText。 你写了

    val editText = findViewById<EditText>(R.id.editText)
    

    但在您的布局中,您没有具有该 ID 的“EditText”。所以这会导致问题

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2022-01-18
    • 2021-06-01
    相关资源
    最近更新 更多