Android studio-Kotlin 如何为 XML 元素(Button、TextView)声明全局变量
Android studio-Kotlin how to declare global variables for XML elements (Button, TextView)
我想在我的 MainActivity.kt 中声明 3 个私有全局变量。
这就是我想要做的,但它不起作用:每次我在模拟器上打开应用程序时都会崩溃。
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private var getTextBtn = Button(this)
private var edtTxtName = EditText(this)
private var textViewHello = TextView(this)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
getTextBtn = binding.getRecipeBtn
edtTxtName = binding.edtTxtName
textViewHello = binding.textViewHello
}
}
我是 Kotlin/Android Studio 的新手,所以我所做的可能是完全错误的,但我不知道该怎么做
您也应该对这些变量使用 private lateinit var
:
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var getTextBtn: Button
private lateinit var edtTxtName: EditText
private lateinit var textViewHello: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
getTextBtn = binding.getRecipeBtn
edtTxtName = binding.edtTxtName
textViewHello = binding.textViewHello
}
}
不过,我反对它 - 您仍然可以从 binding
访问它们。维护的引用越少越好。
我想在我的 MainActivity.kt 中声明 3 个私有全局变量。 这就是我想要做的,但它不起作用:每次我在模拟器上打开应用程序时都会崩溃。
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private var getTextBtn = Button(this)
private var edtTxtName = EditText(this)
private var textViewHello = TextView(this)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
getTextBtn = binding.getRecipeBtn
edtTxtName = binding.edtTxtName
textViewHello = binding.textViewHello
}
}
我是 Kotlin/Android Studio 的新手,所以我所做的可能是完全错误的,但我不知道该怎么做
您也应该对这些变量使用 private lateinit var
:
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var getTextBtn: Button
private lateinit var edtTxtName: EditText
private lateinit var textViewHello: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
getTextBtn = binding.getRecipeBtn
edtTxtName = binding.edtTxtName
textViewHello = binding.textViewHello
}
}
不过,我反对它 - 您仍然可以从 binding
访问它们。维护的引用越少越好。