[英]App unfortunately has stopped when i click the button
`Here is my custom alert dialog, when i run the app it show the button then i click that, it show unfortunately stopped . `这是我的自定义警报对话框,当我运行应用程序时,它会显示按钮,然后我单击它,但不幸的是它显示已停止。 App unfortunately has stopped when i click the button.不幸的是,当我单击按钮时,应用程序已停止。 I searched a lot and I did not find any solution.我搜索了很多,但没有找到任何解决方案。
activity_main.xml activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
tools:context=".MainActivity">
<Button
android:id="@+id/btnKenalan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Klik di Sini Untuk Kenalan"
tools:ignore="HardcodedText" />
</LinearLayout>
layout_alert_dialog.xml layout_alert_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="LabelFor">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/etNama"
android:hint="Masukkan nama anda di sini..."
android:padding="20dp"
android:layout_margin="10dp"
android:autofillHints="no"
android:inputType="text"
tools:ignore="HardcodedText" />
</LinearLayout
MainActivity.kt MainActivity.kt
package com.example.custom_alert_dialog
import android.annotation.SuppressLint
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.*
import androidx.appcompat.app.AlertDialog
class MainActivity : AppCompatActivity() {
@SuppressLint("InflateParams")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnKenalan = findViewById<Button>(R.id.btnKenalan)
btnKenalan.setOnClickListener{
val inflateView = layoutInflater.inflate(R.layout.layout_alert_dialog, null)
val etNama = inflateView.findViewById<EditText>(R.id.etNama)
val alb = AlertDialog.Builder(this@MainActivity)
with(alb) {
setTitle("Mau kenalan?")
setIcon(R.drawable.maskot_kotlin)
setView(inflateView)
setCancelable(false)
setPositiveButton("Selesai") { _, _ ->
val nama = if ("${etNama.text}".isNotEmpty()) "${etNama.text}" else "orang asing"
Toast.makeText(this@MainActivity, "Salam kenal, $nama!" , Toast.LENGTH_SHORT).show()
}
setNegativeButton("Siape lu?") { _, _ ->
Toast.makeText(this@MainActivity, "Sombong amat sih!", Toast.LENGTH_SHORT).show()
}
setNeutralButton("Maaf, cuma numpang lewat", null)
create().show()
}
}
}
}
and this error logcat和这个错误日志猫
Process: com.example.custom_alert_dialog, PID: 3964
android.content.res.Resources$NotFoundException: Resource ID #0x7f070075
at android.content.res.Resources.getValue(Resources.java:1266)
at androidx.appcompat.widget.ResourceManagerInternal.loadDrawableFromDelegates(ResourceManagerInternal.java:252)
at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:139)
at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:132)
at androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:104)
at androidx.appcompat.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:90)
at androidx.appcompat.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:98)
at androidx.appcompat.app.AlertController.setupTitle(AlertController.java:696)
at androidx.appcompat.app.AlertController.setupView(AlertController.java:488)
at androidx.appcompat.app.AlertController.installContent(AlertController.java:233)
at androidx.appcompat.app.AlertDialog.onCreate(AlertDialog.java:279)
at android.app.Dialog.dispatchOnCreate(Dialog.java:373)
at android.app.Dialog.show(Dialog.java:274)
at com.example.custom_alert_dialog.MainActivity.onCreate$lambda-3(MainActivity.kt:34)
at com.example.custom_alert_dialog.MainActivity.$r8$lambda$Xw0rK5YPxl01CTZVbWM_lM-eURY(MainActivity.kt)
at com.example.custom_alert_dialog.MainActivity$$ExternalSyntheticLambda2.onClick(Unknown Source)
at android.view.View.performClick(View.java:4780)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
thank you谢谢你
I believe it's because you didn't initialize your button correctly.我相信这是因为您没有正确初始化按钮。
Just before onCreate
method add private lateinit var btnKenalan: Button
.在onCreate
方法之前添加private lateinit var btnKenalan: Button
。 Then change val btnKenalan = findViewById<Button>(R.id.btnKenalan)
to btnKenalan = findViewById(R.id.btnKenalan
然后将val btnKenalan = findViewById<Button>(R.id.btnKenalan)
更改为btnKenalan = findViewById(R.id.btnKenalan
Your code should now look like this:您的代码现在应该如下所示:
class MainActivity : AppCompatActivity() {
@SuppressLint("InflateParams")
private lateinit var btnKenalan: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btnKenalan = findViewById(R.id.btnKenalan)
btnKenalan.setOnClickListener{
val inflateView = layoutInflater.inflate(R.layout.layout_alert_dialog, null)
val etNama = inflateView.findViewById<EditText>(R.id.etNama)
val alb = AlertDialog.Builder(this@MainActivity)
with(alb) {
setTitle("Mau kenalan?")
setIcon(R.drawable.maskot_kotlin)
setView(inflateView)
setCancelable(false)
setPositiveButton("Selesai") { _, _ ->
val nama = if ("${etNama.text}".isNotEmpty()) "${etNama.text}" else "orang asing"
Toast.makeText(this@MainActivity, "Salam kenal, $nama!" , Toast.LENGTH_SHORT).show()
}
setNegativeButton("Siape lu?") { _, _ ->
Toast.makeText(this@MainActivity, "Sombong amat sih!", Toast.LENGTH_SHORT).show()
}
setNeutralButton("Maaf, cuma numpang lewat", null)
create().show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.