【问题标题】:Android Studio Kotlin: Button continually causes crashes when clickedAndroid Studio Kotlin:单击时按钮不断导致崩溃
【发布时间】:2021-07-15 15:30:15
【问题描述】:

所以我是编码新手,我正在 Android StudioKotlin 中制作一个应用程序,在我的应用程序主页上,我有一个按钮可以将我带到另一个 activity 并且每次我点击它,应用程序崩溃。我想知道如何解决这个问题,以及它是代码错误还是内存错误。提前致谢!

代码如下:

package com.smvcalculator

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val MaleLP = findViewById<Button>(R.id.malebtn)
        MaleLP.setOnClickListener {
            val intent = Intent(this, MaleLP::class.java)
            startActivity(intent)
        }

    }
}

Logcat 错误:

2021-07-14 14:51:57.879 9421-9421/com.smvcalculator E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.smvcalculator, PID: 9421
    android.content.ActivityNotFoundException: Unable to find explicit activity class {com.smvcalculator/com.google.android.material.button.MaterialButton}; have you declared this activity in your AndroidManifest.xml?
        at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2065)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1727)
        at android.app.Activity.startActivityForResult(Activity.java:5320)
        at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:574)
        at android.app.Activity.startActivityForResult(Activity.java:5278)
        at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:560)
        at android.app.Activity.startActivity(Activity.java:5664)
        at android.app.Activity.startActivity(Activity.java:5617)
        at com.smvcalculator.MainActivity.onCreate$lambda-0(MainActivity.kt:15)
        at com.smvcalculator.MainActivity.lambda$pO9IRxlIimBerH3k2cIfwv6P3Wg(Unknown Source:0)
        at com.smvcalculator.-$$Lambda$MainActivity$pO9IRxlIimBerH3k2cIfwv6P3Wg.onClick(Unknown Source:4)
        at android.view.View.performClick(View.java:7448)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
        at android.view.View.performClickInternal(View.java:7425)
        at android.view.View.access$3600(View.java:810)
        at android.view.View$PerformClick.run(View.java:28305)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
2021-07-14 14:51:58.073 9421-9421/com.smvcalculator I/Process: Sending signal. PID: 9421 SIG: 9

【问题讨论】:

标签: java android android-studio kotlin


【解决方案1】:

我想这里的问题是,它说have you declared this activity in your AndroidManifest.xml? 所以你需要在你的AndroidManifest.xml 文件中添加这个活动的名称,即MaleLP.java,如下所示:

<activity
        android:name=".MaleLP"
       />

【讨论】:

  • 很高兴听到这个消息:)
【解决方案2】:

我终于找到了错误。您的 Button 与将用于 intentActivity 具有相同的名称。改成这样:

package com.smvcalculator

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val maleLP_button = findViewById<Button>(R.id.malebtn) //new button name
        maleLP_button.setOnClickListener {
            val intent = Intent(this, MaleLP::class.java) //different to class name
            startActivity(intent)
        }
    }
}

现在应该可以了:)

【讨论】:

  • 做了第一个建议,还没有运行代码但是做第二件事有什么好处???你说“我敢打赌你忘记在你的 AndroidManifest.xml 中定义新的 Activity。所以在你的其他 上面添加这段代码”跨度>
  • 您需要定义存在另一个活动。没有它就无法初始化。您是否尝试添加它?
  • 没用,这就是我得到的。 .......\SMVCalculator\app\src\main\java\com\smvcalculator\MainActivity.kt: (14, 33): Unresolved reference: context
  • 是的,我做到了,我创建了变量并引用了活动,也许我没有做对。class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super. onCreate(savedInstanceState) setContentView(R.layout.activity_main) val MaleLP = findViewById
  • 所以你在 AndroidManifest.xml 中定义了这两个类?
猜你喜欢
  • 2020-03-05
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多