【发布时间】:2021-05-03 19:43:27
【问题描述】:
我编写了一个 kotlin 应用程序,想知道为什么代码在初始化期间会通过侦听器运行。我尝试用我的代码来解释这个问题:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
findpath()
//check, if Dateien existieren, sonst create in function
checkOrCreateFiles()
binding = ActivityMainBinding.inflate(layoutInflater)
var view = binding.root
setContentView(view) //R.layout.activity_main)
val cadapterk: ArrayAdapter<String> = ArrayAdapter<String>(
this,
android.R.layout.simple_spinner_item, myvokdirs
)
binding.spinnerKasten.adapter = cadapterk
//binding.spinnerKasten.setSelection(0)
binding.spinnerKasten.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(
parent: AdapterView<*>,
view: View,
position: Int,
id: Long
) {
kastenselected = myvokdirs[position].toString()
setnewpath(kastenselected)
}
override fun onNothingSelected(parent: AdapterView<*>) {
kastenselected = myvokdirs[0]
}
}
binding.AuswahlContainer.isEnabled = false
fileAktuell = boxes[0] //dateiAkt
checkAktuell = gut[0] // gutAkt
readDatei(fileAktuell)
binding.spinnerKasten.isEnabled = false
// some addional code
}
情况/问题
原则上,该代码有效。绑定没问题微调器“binding.spinnerkasten”没问题。关联的适配器“cadapterk”没问题,并显示了我的列表“myvokdirs”的数据。但是:
在初始化微调器期间,代码通过“setnewpath”运行。但“setnewpath”只能在选择微调器中的项目后使用。
如何避免在初始化期间触发“setnewpath”?看来,应用程序在 onCreate-function 期间通过侦听器运行。
有什么问题或我的误解是,代码已经在 init 中触发“setnewpath”,而不是仅在选择项目后触发?
我是否应该将它与 onCLickListener 结合使用?
(其他都正确。微调器出现在正确的位置,微调器显示正确的数据
【问题讨论】: