Я следовал некоторому руководству (скачайте Android-студию сегодня) по kotlin, и я использую setText, и он не работает. в чем будет проблема?

package com.example.basic

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

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

        button.setOnClickListener {
            Toast.makeText(applicationContext, "button was pressed.", Toast.LENGTH_LONG).show()
        }

        button2.setOnClickListener {
            val input = editTextTextPersonName.text.toString()
            TextView.setText("entered value: ${input}")
        }
    }
}

(Я пытался заменить setText на текст, но он все еще красный и не может его сохранить)

Неразрешенная ссылка: setText (ошибка)

0
kimhaju 4 Фев 2022 в 13:38
Прикрепите лог ошибок пожалуйста
 – 
Stefano Sansone
4 Фев 2022 в 13:39
2
Кажется, вы используете сам класс TextView, но я предполагаю, что вы хотите использовать свое представление. может быть, это начинается с маленького случая textView. Проверьте id этого TextView в XML. Вы можете изменить идентификатор, если он имеет то же имя, что и класс.
 – 
Mayur Gajra
4 Фев 2022 в 13:42

2 ответа

Лучший ответ

TextView — имя класса. Вам нужно применить setText к экземпляру класса. так же, как ты

editTextTextPersonName.text.toString()

Вместо того

EditText.text.toString()

Я не знаю, что вызывается ваш TextView, но вам нужно сделать

instanceOfYourTextView.setText("entered value: ${input}")
2
Ivo Beckers 4 Фев 2022 в 13:42
Благодарить! Но даже после того, что вы сказали, setText не сработал.
 – 
kimhaju
4 Фев 2022 в 13:50
Ой! Я думаю, что мне не хватало идентификатора TextView. Это был TextView2. Спасибо!
 – 
kimhaju
4 Фев 2022 в 15:25

Как упомянул Маюр Гаджра, вы не используете представление из XML, а вместо этого используете класс TextView, и это ваша проблема, вместо этого вам нужно иметь что-то вроде этого:

<TextView
     android:id="@+id/text"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text=""
     />

И тогда ваша MainActivity должна выглядеть следующим образом:

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

        button.setOnClickListener {
            Toast.makeText(applicationContext, "button was pressed.", Toast.LENGTH_LONG).show()
        }

        button2.setOnClickListener {
            val input = editTextTextPersonName.text.toString()
            text.setText("entered value: ${input}")
        }
    }
}
0
Pako1 4 Фев 2022 в 14:39
Ой! Я думаю, что мне не хватало идентификатора TextView. Это был TextView2. Спасибо!
 – 
kimhaju
4 Фев 2022 в 15:25