Mainactivity.kt не распознает идентификатор в Android studio kotlin

#android #xml #android-studio #android-layout #kotlin

#Android #xml #android-studio #android-макет #kotlin

Вопрос:

Я пытаюсь запустить приложение для Android в kotlin. Но Mainactivity.kt не распознает идентификатор в Android studio kotlin.

введите описание изображения здесь

введите описание изображения здесь

Я перепробовал много способов сделать это, чтобы устранить эту ошибку. я даже попытался зайти в build и нажать «Очистить проект», затем «перестроить проекты».

но ошибка не сдвинулась с места, она все еще существует. я ввел идентификатор TextView в MainActivity.kt, но он по-прежнему отображается красным!

как я могу это решить, пожалуйста, помогите!

Комментарии:

1. Вы пытались запустить приложение? Пожалуйста, поделитесь своим logcat

2. Импортировали ли вы соответствующий файл макета вашей активности? Вот так: import kotlinx.android.synthetic.main.your_layout_file_name.*

3. @mayank1513 сэр, я попытался запустить приложение, оно показывает неразрешенную ссылку.

4. @SoumikBhattacharjee при импорте в Kotlinx отображается ошибка в Mainactivity

Ответ №1:

kotlin synthetic больше не доступно. В Kotlin 1.4.20-M2 JetBrains устаревший плагин компилятора расширений Kotlin для Android. вместо этого используйте findViewById или ViewBinding для получения дополнительной информации проверьте эту проблему также проверьте эту фиксацию

Комментарии:

1. Пожалуйста, отправьте соответствующий источник

Ответ №2:

Я протестировал код для Kotlin версии 1.4.1, и он отлично работал.

Чтобы устранить вашу ошибку, вы можете использовать val tv:TextView = findViewById(R.id.tv_content) и использовать tv в своем коде.

Второй вариант заключается в том, что вы classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.20" в своем файле build.gradle для classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10"

Как указано @Jimale Abdi —

kotlinx.android.synthetic больше не является рекомендуемой практикой. Удаление в пользу явного findViewById.

введите описание изображения здесь

Надеюсь, это поможет.

Ответ №3:

Вам необходимо использовать findViewById()

Объявите tv_content переменную в своем классе:

 private lateinit var tv_content: TextView
 

В onCreate добавить:

 tv_content = findViewById(R.id.tv_content)
 

Теперь в вашей Update функции вы можете вызвать:

 tv_content.text = "Text you want to set"
 

Комментарии:

1. где находится функция обновления, можете ли вы мне сказать?

Ответ №4:

убедитесь, что добавлен плагин kotlin(«android.extensions») для build.gradle(Module)

Ответ №5:

Лучший способ сделать это — использовать привязку данных. Выполните следующие действия

  1. Добавьте привязку данных в сценарий Gradle >>> build.gradle(модуль.YourAppName.app)
         release {
          ........
          ........
         
        }
    }
    //add your code here
    dataBinding{
        enabled  = true
    } 
 
  1. Синхронизируйте проект
  2. добавьте тег <layout> в activity_main.xml планировка
 <layout
    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">
  
   <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
    <TextView
        android:id="@ id/tv_content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         android:textSize= "30sp"/>

</LinearLayout>
</layout>
 
  1. В MainActicity.kt добавьте код привязки данных
 class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding //binding variable

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_news) //binding content view


    }
    fun update(view: View){
        binding.tv_content.text = "your text goes here" //apply the binding to text
      }

}
 

Наслаждайтесь 🙂

Ответ №6:

просто откройте файл приложения для сборки gradle. и замените ваши плагины на

 plugins {
     id 'com.android.application'
     id 'kotlin-android'
     id 'kotlin-android-extensions'
    }