Brak potrzebnej dokumentacji / biblioteki ?

0

Witam,
na studia piszę prosty kalkulator w kotlinie. Wszystko wygląda dobrze tylko ewidentnie problem jest w braku biblioteki / dokumentacji ?
Na czerwono podświetla mi wszystkie linijki z "tv"

package com.example.kalkulator_hehe


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

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        //Numery
        tvOne.setOnClickListener { appendOnExpresstion("1", canClear = true )}
        tvTwo.setOnClickListener { appendOnExpresstion("2", canClear = true )}
        tvThree.setOnClickListener { appendOnExpresstion("3", canClear = true )}
        tvFour.setOnClickListener { appendOnExpresstion("4", canClear = true )}
        tvFive.setOnClickListener { appendOnExpresstion("5", canClear = true )}
        tvSix.setOnClickListener { appendOnExpresstion("6", canClear = true )}
        tvSeven.setOnClickListener { appendOnExpresstion("7", canClear = true )}
        tvEight.setOnClickListener { appendOnExpresstion("8", canClear = true )}
        tvNine.setOnClickListener { appendOnExpresstion("9", canClear = true )}
        tvZero.setOnClickListener { appendOnExpresstion("0", canClear = true )}
        tvDot.setOnClickListener { appendOnExpresstion(".", canClear = true )}
        //Operacje
        tvPlus.setOnClickListener {appendOnExpresstion("+", canClear = false)}
        tvMinus.setOnClickListener {appendOnExpresstion("-", canClear = false)}
        tvMul.setOnClickListener {appendOnExpresstion("*", canClear = false)}
        tvDivide.setOnClickListener {appendOnExpresstion("/", canClear = false)}
        tvOpen.setOnClickListener {appendOnExpresstion("(", canClear = false)}
        tvClose.setOnClickListener {appendOnExpresstion(")", canClear = false)}

        tvClear.setOnCLickListener {
            tvExpression.text =""
            tvResult.text = ""
        }

        tvBack.setOnClickListener {
            val string = tvExpression.text.toString()
            if(string.isNotEmpty()){
                tvExpression.text = string.substring(0,string.length-1)
            }
            tvResult.text = ""
        }
        tvEquals.setOnClickListener {
            try {
                val expression = ExpressionBuilder(tvExpression.text.toString()).build()
                val result = expression.evaluate()
                val longResult = result.toLong()
                if(result == longResult.toDouble())
                    tvResult.text = longResult.toString()
                else
                    tvResult.text = result.toString()

            }catch (e:Exception){
                Log.d("Exception"," message : " + e.message )
            }
        }

    }

    fun appendOnExpresstion(string: String, canClear: Boolean) {

        if(tvResult.text.isNotEmpty()){
            tvExpression.text = ""
        }

        if (canClear) {
            tvResult.text = ""
            tvExpression.append(string)
        } else {
            tvExpression.append(tvResult.text)
            tvExpression.append(string)
            tvResult.text = ""
        }
    }


}
2

Możesz skorzystać z kotlin extension. Najpierw dodajesz do gradle, potem robisz import widoku xmlowego, żebyś w klasie widział kontrolki z widoku

EDIT:
Lub bardziej nowocześnie, bo kotlin extension jest deprecated. Jetpack view binding

0

@panryz: Dodałem plugin (chyba), mógłbyś podpowiedzieć coś więcej na temat "importu"

1

Więc pokaż jak dodałeś plugin.
Co do importu, to po zsynchronizowaniu projektu gradle, proponuję na nierozpoznanej kontrolce w Javie kliknąc Alt + Enter i tam będzie podpowiedź dotycząca importu. Jeśli nie to ręcznie import kotlinx.android.synthetic.main.activity_main.*

0

@panryz: zrobiłem i działa dzięki bardzo, niech Bóg w wypłacie wynagrodzi
0_C-cPP9D2MIyeexAT.gif

1 użytkowników online, w tym zalogowanych: 0, gości: 1