Почему у меня приложение на Android, написанное на Kotlin вылетает при запуске?

Рейтинг: 1Ответов: 0Опубликовано: 18.02.2023

На данный момент обучаюсь разработке приложений для андроида на языке Kotlin (до этого делал их на Java), пытаюсь в учебных целях для начала сделать калькулятор.

Столкнулся с кучей трудностей, до этого не встречавшихся на Java. Сначала у меня была проблема в том, что при прямом обращении к id объекта он у меня их не видит, поискал на форуме, в чем проблема, и решил что надо теперь по findViewById делать, как по старинке.

Сделал. Проблему не решило. Ошибок в коде с дизайном и MainActivity у меня на этом этапе не было, максимум рекомендации с желтым значком. Я исправил их в MainActivity, сделав везде где только можно модификаторы доступа private, как посоветовала мне Android Studio, и убрал подчеркивания в переменных, но это ситуацию не улучшило, приложение, которое на этом этапе должно вводить цифры и знаки сложения, вычитания, умножения, деления и скобки просто вылетает прям при запуске на моем телефоне (запускаю все на нем, т.к. эмулятор жутко тормозит), хотя Android Studio не выводит никаких ошибок нигде, даже при запуске.

Может вы подскажете, в чем проблема?

Вот код из MainActivity:

package com.itproger.calculator

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView

class MainActivity : AppCompatActivity() {
    private var mathoperation: TextView = findViewById(R.id.math_operation)
    private var btn0: TextView=findViewById(R.id.btn_0)
    private var btn1: TextView=findViewById(R.id.btn_1)
    private var btn2: TextView=findViewById(R.id.btn_2)
    private var btn3: TextView=findViewById(R.id.btn_3)
    private var btn4: TextView=findViewById(R.id.btn_4)
    private var btn5: TextView=findViewById(R.id.btn_5)
    private var btn6: TextView=findViewById(R.id.btn_6)
    private var btn7: TextView=findViewById(R.id.btn_7)
    private var btn8: TextView=findViewById(R.id.btn_8)
    private var btn9: TextView=findViewById(R.id.btn_9)
    private var minusbtn: TextView=findViewById(R.id.minus_btn)
    private var plusbtn: TextView=findViewById(R.id.plus_btn)
    private var multbtn: TextView=findViewById(R.id.mult_btn)
    private var divbtn: TextView=findViewById(R.id.div_btn)
    private var brobtn: TextView=findViewById(R.id.bro_btn)
    private var brcbtn: TextView=findViewById(R.id.brc_btn)
    private var clearbtn: TextView=findViewById(R.id.clear_btn)
    private var backbtn: TextView=findViewById(R.id.back_btn)
    private var resultText: TextView=findViewById(R.id.result_Text)

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

        btn0.setOnClickListener { setTextFields("0") }
        btn1.setOnClickListener { setTextFields("1") }
        btn2.setOnClickListener { setTextFields("2") }
        btn3.setOnClickListener { setTextFields("3") }
        btn4.setOnClickListener { setTextFields("4") }
        btn5.setOnClickListener { setTextFields("5") }
        btn6.setOnClickListener { setTextFields("6") }
        btn7.setOnClickListener { setTextFields("7") }
        btn8.setOnClickListener { setTextFields("8") }
        btn9.setOnClickListener { setTextFields("9") }
        minusbtn.setOnClickListener { setTextFields("-") }
        plusbtn.setOnClickListener { setTextFields("+") }
        multbtn.setOnClickListener { setTextFields("*") }
        divbtn.setOnClickListener { setTextFields("/") }
        brobtn.setOnClickListener { setTextFields("(") }
        brcbtn.setOnClickListener { setTextFields(")") }

        clearbtn.setOnClickListener {
            mathoperation.text = ""
            resultText.text = ""
        }

        backbtn.setOnClickListener {
            val str = mathoperation.text.toString()
            if (str.isNotEmpty()) {
                mathoperation.text = str.substring(0, str.length-1)
                resultText.text = ""
            }
        }

    }

    private fun setTextFields(str: String){
        mathoperation.append(str)

    }

}

А это из дизайна:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:background="@android:color/black"
    android:orientation="vertical"
    tools:context=".MainActivity"
    tools:ignore="ExtraText">

    <TextView
        android:id="@+id/math_operation"
        android:layout_width="match_parent"
        android:layout_height="80sp"
        android:textColor="@android:color/white"
        android:gravity="end"
        android:ellipsize="start"
        android:textSize="40sp"
        android:singleLine="true"
        />
    <TextView
        android:id="@+id/result_Text"
        android:layout_width="match_parent"
        android:layout_height="100sp"
        android:textColor="@android:color/white"
        android:gravity="end"
        android:ellipsize="start"
        android:textSize="30sp"
        android:singleLine="true"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            tools:ignore="Suspicious0dp">

            <TextView
                style="@style/NumberButton"
                android:id="@+id/clear_btn"
                android:text="AC"/>
            <TextView
                style="@style/NumberButton"
                android:id="@+id/bro_btn"
                android:text="("/>
            <TextView
                style="@style/NumberButton"
                android:id="@+id/brc_btn"
                android:text=")"/>
            <TextView
                style="@style/NumberButton"
                android:id="@+id/div_btn"
                android:text="/"/>
        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            tools:ignore="Suspicious0dp">

            <TextView
                style="@style/ActionButton"
                android:id="@+id/btn_7"
                android:text="7"/>
            <TextView
                style="@style/ActionButton"
                android:id="@+id/btn_8"
                android:text="8"/>
            <TextView
                style="@style/ActionButton"
                android:id="@+id/btn_9"
                android:text="9"/>
            <TextView
                style="@style/NumberButton"
                android:id="@+id/mult_btn"
                android:text="*"/>


        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            tools:ignore="Suspicious0dp">

            <TextView
                style="@style/ActionButton"
                android:id="@+id/btn_4"
                android:text="4"/>
            <TextView
                style="@style/ActionButton"
                android:id="@+id/btn_5"
                android:text="5"/>
            <TextView
                style="@style/ActionButton"
                android:id="@+id/btn_6"
                android:text="6"/>
            <TextView
                style="@style/NumberButton"
                android:id="@+id/plus_btn"
                android:text="+"/>


        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            tools:ignore="Suspicious0dp">

            <TextView
                style="@style/ActionButton"
                android:id="@+id/btn_1"
                android:text="1"/>
            <TextView
                style="@style/ActionButton"
                android:id="@+id/btn_2"
                android:text="2"/>
            <TextView
                style="@style/ActionButton"
                android:id="@+id/btn_3"
                android:text="3"/>
            <TextView
                style="@style/NumberButton"
                android:id="@+id/minus_btn"
                android:text="-"/>


        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            tools:ignore="Suspicious0dp">

            <TextView
                style="@style/ActionButton"
                android:text="."/>
            <TextView
                android:id="@+id/btn_0"
                style="@style/ActionButton"
                android:text="0"/>
            <TextView
                android:id="@+id/back_btn"
                style="@style/ActionButton"
                android:text="Back"/>
            <TextView
                style="@style/NumberButton"
                android:text="="/>


        </LinearLayout>

    </LinearLayout>

</LinearLayout>

Ответы

Ответов пока нет.