我不知道這是可能的,但我正在關注一個示例,我看到了這段代碼:
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
toggleButtonGroup.addOnButtonCheckedListener { toggleButtonGroup, checkedId, isChecked ->
//some code here
}
}
這是代碼: https ://gist.github.com/smartherd/0803ba4e287d6aa0d441d0a221eeb013
“toggleButtonGroup”是布局中元素的ID,他沒有在MainActivity的任何地方宣告它,我該怎么做?
uj5u.com熱心網友回復:
您所看到的內容是Kotlin synthetics并且一直deprecated支持ViewBinding并且非常不鼓勵使用。你應該ViewBinding改用。
通過在模塊級別內將構建功能ViewBinding設定為 , 為您的專案啟用viewBindingtruebuild.gradle
android {
...
buildFeatures {
viewBinding = true
}
...
}
通過啟用此功能,Android Studio 將開始viewBinding為您的layouts.
ViewBinding在內部使用activity
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
//here access your view using binding
binding.toggleButtonGroup.addOnButtonCheckedListener { toggleButtonGroup, checkedId, isChecked ->
//some code here
}
}
}
ActivityMainBinding是class由 Android Studio 使用activity_main布局生成的。
ViewBinding在內部使用fragment
class TestFragment: Fragment() {
private var _binding: TestFragmentBinding? = null
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = TestFragmentBinding.inflate(inflater, container, false)
val view = binding.root
return view
}
override fun onDestroyView() {
super.onDestroyView()
//setting _binding to null is important to avoid any memory leaks
_binding = null
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/473235.html
