Это код первого действия:
Код: Выделить всё
package com.example.drzewogenealogiczne
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import androidx.activity.ComponentActivity
class ListOfPeople : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_list_of_people)
val btnAddPerson = findViewById(R.id.add_person_button)
btnAddPerson.setOnClickListener {
val intentAddPerson = Intent(this, DataBaseActivity::class.java)
startActivity(intentAddPerson)
}
val btnBackToMenu = findViewById(R.id.btnBackToMenu)
btnBackToMenu.setOnClickListener {
val intentMenu = Intent(this, MainMenu::class.java)
startActivity(intentMenu)
}
}
}
Код: Выделить всё
package com.example.drzewogenealogiczne
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
class DataBaseActivity : AppCompatActivity() {
private lateinit var enterFirstName : EditText
private lateinit var enterSecondName : EditText
private lateinit var enterLastName : EditText
private lateinit var enterMaidenName : EditText
private lateinit var enterStatus : EditText
private lateinit var enterGender: EditText
private lateinit var enterBirthDate : EditText
private lateinit var enterBirthPlace : EditText
private lateinit var enterDeathDate : EditText
private lateinit var enterDeathPlace: EditText
private lateinit var btnInsert: Button
private lateinit var btnPrint: Button
private lateinit var firstName: TextView
private lateinit var secondName: TextView
private lateinit var lastName: TextView
private lateinit var maidenName: TextView
private lateinit var status: TextView
private lateinit var gender: TextView
private lateinit var birthDate: TextView
private lateinit var birthPlace: TextView
private lateinit var deathDate: TextView
private lateinit var deathPlace: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_data_base)
//Initialize UI components
enterFirstName = findViewById(R.id.enterFirstName)
enterSecondName = findViewById(R.id.enterSecondName)
enterLastName = findViewById(R.id.enterLastName)
enterMaidenName = findViewById(R.id.enterMaidenName)
enterStatus = findViewById(R.id.enterStatus)
enterGender = findViewById(R.id.enterGender)
enterBirthDate = findViewById(R.id.enterBirthDate)
enterBirthPlace = findViewById(R.id.enterBirthPlace)
enterDeathDate = findViewById(R.id.enterDeathDate)
enterDeathPlace = findViewById(R.id.deathPlace)
btnInsert = findViewById(R.id.btnInsert)
btnPrint = findViewById(R.id.btnPrint)
val db = DataBaseHandler(this, null)
//Add data to database on button click
btnInsert.setOnClickListener {
val inputFirstName = enterFirstName.text.toString().trim()
val inputSecondName = enterSecondName.text.toString().trim()
val inputLastName = enterLastName.text.toString().trim()
val inputMaidenName = enterMaidenName.text.toString().trim()
val inputStatus = enterStatus.text.toString().trim()
val inputGender = enterGender.text.toString().trim()
val inputBirthDate = enterBirthDate.text.toString().trim()
val inputBirthPlace = enterBirthPlace.text.toString().trim()
val inputDeathDate = enterDeathDate.text.toString().trim()
val inputDeathPlace = enterDeathPlace.text.toString().trim()
if (inputFirstName.isEmpty() ||
inputSecondName.isEmpty() ||
inputLastName.isEmpty() ||
inputMaidenName.isEmpty() ||
inputStatus.isEmpty() ||
inputGender.isEmpty() ||
inputBirthDate.isEmpty() ||
inputBirthPlace.isEmpty() ||
inputDeathDate.isEmpty() ||
inputDeathPlace.isEmpty()
){
Toast.makeText(this, "Proszę uzupełnij wszystkie dane", Toast.LENGTH_SHORT).show()
} else {
// Add to database
db.insertData(inputFirstName,
inputSecondName,
inputLastName,
inputMaidenName,
inputStatus,
inputGender,
inputBirthDate,
inputBirthPlace,
inputDeathDate,
inputDeathPlace)
Toast.makeText(this, "$inputFirstName $inputSecondName $inputLastName został(a) dodany/a", Toast.LENGTH_LONG).show()
// Clear input fields
enterFirstName.text.clear()
enterSecondName.text.clear()
enterLastName.text.clear()
enterMaidenName.text.clear()
enterStatus.text.clear()
enterGender.text.clear()
enterBirthDate.text.clear()
enterBirthPlace.text.clear()
enterDeathDate.text.clear()
enterDeathPlace.text.clear()
}
}
btnPrint.setOnClickListener{
firstName.text = ""
secondName.text = ""
lastName.text = ""
maidenName.text = ""
status.text = ""
gender.text = ""
birthDate.text = ""
birthPlace.text = ""
deathDate.text = ""
deathPlace.text = ""
val cursor = db.getData()
cursor.use {
if (cursor.moveToFirst()) {
do {
val personFirstName = cursor.getString(cursor.getColumnIndexOrThrow(
DataBaseHandler.COLUMN_FIRST_NAME))
val personSecondName = cursor.getString(cursor.getColumnIndexOrThrow(
DataBaseHandler.COLUMN_SECOND_NAME))
val personLastName = cursor.getString(cursor.getColumnIndexOrThrow(
DataBaseHandler.COLUMN_LAST_NAME))
val personMaidenName = cursor.getString(cursor.getColumnIndexOrThrow(
DataBaseHandler.COLUMN_MAIDEN_NAME))
val personStatus = cursor.getString(cursor.getColumnIndexOrThrow(
DataBaseHandler.COLUMN_STATUS))
val personGender = cursor.getString(cursor.getColumnIndexOrThrow(
DataBaseHandler.COLUMN_GENDER))
val personBirthDate = cursor.getString(cursor.getColumnIndexOrThrow(
DataBaseHandler.COLUMN_BIRTHDATE))
val personBirthPlace = cursor.getString(cursor.getColumnIndexOrThrow(
DataBaseHandler.COLUMN_BIRTHPLACE))
val personDeathDate = cursor.getString(cursor.getColumnIndexOrThrow(
DataBaseHandler.COLUMN_DEATHDATE))
val personDeathPlace = cursor.getString(cursor.getColumnIndexOrThrow(
DataBaseHandler.COLUMN_DEATHPLACE))
// Append data to text views
firstName.append("$personFirstName\n")
secondName.append("$personSecondName\n")
lastName.append("$personLastName\n")
maidenName.append("$personMaidenName\n")
status.append("$personStatus\n")
gender.append("$personGender\n")
birthDate.append("$personBirthDate\n")
birthPlace.append("$personBirthPlace\n")
deathDate.append("$personDeathDate\n")
deathPlace.append("$personDeathPlace\n")
} while (cursor.moveToNext())
}
}
}
}
}
Изменить: когда я нажимаю кнопку, чтобы переключить действие с ListOfPeople на DataBaseActivity, приложение либо возвращает меня к предыдущему экрану, либо полностью закрывается. Другие кнопки переключения активности я настроил таким же образом, и они работают корректно. Я не знаю, почему это происходит в данном случае.
Трассировка стека:
2025-10-26 11:37:35.459 9311-9311 AndroidRuntime
com.example.drzewogenealogiczne E FATAL EXCEPTION: main (Спросите
Близнецы)
Процесс: com.example.drzewogenealogiczne, PID: 9311
java.lang.RuntimeException: невозможно начать действие
ComponentInfo{com.example.drzewogenealogiczne/com.example.drzewogenealogiczne.DataBaseActivity}:
java.lang.ClassCastException:
com.google.android.material.textview.MaterialTextView нельзя привести
к android.widget.EditText
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3782)
at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3922)
at
android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at
android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
at
android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
в android.app.ActivityThread.main(ActivityThread.java:8177)
в java.lang.reflect.Method.invoke(собственный метод)
at
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Вызвано: java.lang.ClassCastException:
com.google.android.material.textview.MaterialTextView нельзя привести
к android.widget.EditText
at
com.example.drzewogenealogiczne.DataBaseActivity.onCreate(DataBaseActivity.kt:48)
at android.app.Activity.performCreate(Activity.java:8595)
at android.app.Activity.performCreate(Activity.java:8573)
at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456)
at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3764)
at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3922)
at
android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at
android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
at
android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:205)
at android.os.Looper.loop(Looper.java:294)
at android.app.ActivityThread.main(ActivityThread.java:8177)
at java.lang.reflect.Method.invoke(Native Method)
at
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971)
Подробнее здесь: https://stackoverflow.com/questions/797 ... ies-kotlin
Мобильная версия