затем установите значение даты

ой первый раз, когда я создаю приложение для Android. Однако, когда я запускаю приложение на моем виртуальном устройстве, оно перестало работать и продолжает падать. Ошибка говорит что-то об исключении нулевого указателя. Я впервые использую Kotlin, я написал код на Java и перешел на Kotlin.

 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_add_sales)

    val date: EditText? = null
    val changeDate: CheckBox? = null
    val yes: RadioButton? = null
    val no: RadioButton? = null

    date!!.setText("15-11-2017")
    date.isEnabled = false

    val button2 = findViewById<View>(R.id.btnSubmit) as Button
    button2.setOnClickListener {
        var name = findViewById<View>(R.id.name) as EditText
        var cost = findViewById<View>(R.id.cost) as EditText
        val itemcost = Integer.parseInt(cost!!.text.toString())
        var price = findViewById<View>(R.id.price) as EditText
        val itemprice = Integer.parseInt(price!!.text.toString())
        var qty = findViewById<View>(R.id.quantity) as EditText
        var chgDate = false
        var discount = false
        val toast = Toast(applicationContext)
        if (itemprice < itemcost) {
            price!!.error = "Selling price cannot be lower than item price!"
        } else {
            if (changeDate!!.isChecked) {
                chgDate = true
                date.isEnabled = true
            }
            if (yes!!.isChecked) {
                discount = true
            }
        }
        Toast.makeText([email protected], "Item Name: " + name!!.text + "\n" + "Cost: " + cost!!.text + "\n" + "Item Price: " + price!!.text + "\n" + "Quantity: " + qty!!.text + "Date: " + date + "Staff Discount: " + discount, Toast.LENGTH_SHORT).show()
    }

}

и ошибка:

11-17 06: 23: 34.603 3540-3540 / com.example.ruiru.salestracker E / AndroidRuntime: ОСНОВНОЕ ИСКЛЮЧЕНИЕ: основной Процесс: com.example.ruiru.salestracker, PID: 3540 java.lang.RuntimeException: Невозможно запустить действие ComponentInfo {com.example.ruiru.salestracker / com.example.ruiru.salestracker.AddSales}: kotlin.KotlinNullPointerException в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2817) в android.app.ActivityThread.handleLaunchActivity. Java: 2892) на android.app.ActivityThread.-wrap11 (неизвестный источник: 0) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1593) на android.os.Handler.dispatchMessage (Handler.java:105) ) в android.os.Looper.loop (Looper.java:164) в android.app.ActivityThread.main (ActivityThread.java:6541) в java.lang.reflect.Method.invoke (собственный метод) в com.android. internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:240) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767) Вызывается: kotlin.KotlinNullPointerExceptio n на com.example.ruiru.salestracker.AddSales.onCreate (AddSales.kt: 25) на android.app.Activity.performCreate (Activity.java:6975) на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1213) на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2770) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2892) на android.app.ActivityThread.-wrap11 (неизвестный источник: 0) на android.app. ActivityThread $ H.handleMessage (ActivityThread.java:1593) на android.os.Handler.dispatchMessage (Handler.java:105) на android.os.Looper.loop (Looper.java:164) на android.app.ActivityThread.main (ActivityThread.java:6541) на java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:240) на com.android.internal.os .ZygoteInit.main (ZygoteInit.java:767)

 MathanG17 нояб. 2017 г., 07:32
date !!. setText ("15-11-2017") дата, которую вы объявили нулевой. и вы устанавливаете текст в нулевую переменную. Установить текст после инициализации даты просмотра.

Ответы на вопрос(3)

t инициализируйте edittext следующим образом

var date = findViewById<View>(R.id.date) as EditText

затем установите значение даты

date!!.setText("15-11-2017")
date.isEnabled = false
val date: EditText? = null
val changeDate: CheckBox? = null
val yes: RadioButton? = null
val no: RadioButton? = null

findViewById или связать их с представлением XML.

Решение Вопроса

вы забыли инициализироватьdate редактировать текст. Почему бы не попробоватьРасширение Kotlin для Android, Используя этот плагин, вам не нужно инициализировать представления, вместо этого вы можете напрямую использовать их, используя их идентификатор. Для вашего случая: просто добавьте импорт

import kotlinx.android.synthetic.main.activity_add_sales.*

Теперь вы можете удалить:

val date: EditText? = null
val changeDate: CheckBox? = null
val yes: RadioButton? = null
val no: RadioButton? = null

и вы можете получить к ним доступ по их идентификаторам. любить

date.setText("15-11-2017")

Ваш ответ на вопрос