#android #kotlin #android-activity #android-viewbinding #companion-object
Вопрос:
package com.example.birthdayapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import com.example.birthdayapp.databinding.ActivityMainBinding
class birthdayActivity : AppCompatActivity() {
private lateinit var binding: birthdayActivity
//использование сопутствующего объекта
сопутствующий объект{
const val NAME_EXTRA="Name_extra"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//implementing view binding
binding= birthdayActivity.inflate(layoutInflater) //here red line shows below inflate
setContentView(binding.root) //here red line shows below root
//getting name from main activity
val name=intent.getStringExtra(NAME_EXTRA)
}
}
//MainActivity
package com.example.birthdayapp
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import com.example.birthdayapp.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding= ActivityMainBinding.inflate(layoutInflater) //Here, I have successfully used viewbinding
setContentView(binding.root)
binding.birthdaybutn.setOnClickListener {
val name=binding.nam.editableText.toString()
val intent=Intent(this,birthdayActivity::class.java)
intent.putExtra(birthdayActivity.NAME_EXTRA,name)
startActivity(intent)
}
}
}
//Я успешно использовал привязку просмотра в MainActivity , но когда я попытался использовать привязку просмотра в birthdayActivity ,я получил красные строки для ( ключевое слово inflate и root), потому что я использовал сопутствующий объект в birthdayActiviy, тогда как у меня нет сопутствующего объекта в MainActiviy
Комментарии:
1. Иногда IDE не удается создать
viewbinding
класс, попробуйте перестроить свой проект.2. Я попытался перестроить свой проект, но он все еще показывает ошибку
3. затем убедитесь, что ваше
birthdayActivity
имя класса привязки правильное, это, вероятноBirthdayActivityBinding
.