【发布时间】:2021-07-06 16:22:48
【问题描述】:
我有一个对话框,其中包括一个约束布局中的微调器(“new_widget_layout.xml”)。要获取 Spinner 的 id,我使用以下代码:
setContentView(R.layout.new_widget_layout)
val typeSpinner = findViewById<Spinner>(R.id.widgetTypeSpinner)
ArrayAdapter.createFromResource(this, R.array.types, android.R.layout.simple_spinner_item).also {
it.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
typeSpinner.adapter = it
}
// The contentView is changed back, see below...
如您所见,我需要先将 ContentView 更改为我的 dialogLayout,这样才能获取 spinner 的 id。但是如果我想把它改回标准布局,我的 onclicklisteners 就不起作用了。
示例
val deleteButton = findViewById<Button>(R.id.deleteButton) // This is before the contentView is changed
deleteButton.setOnClickListener { // This is after the content View is changed back and forth and it does nothing
// code
}
我尝试了多种方法将 contentView 改回正常状态,例如:
setContentView(findViewById<ConstraintLayout>(R.id.myLayout))setContentView(R.layout.activity_main)
但似乎没有任何效果。所有按钮等都正确显示,但如果单击它们,则没有任何反应。如果我完全删除带有 contentViews 和 Spinner 的代码,它就可以工作。
【问题讨论】:
-
如果您只是在之后直接破坏视图,为什么还需要微调器?
-
@HenryTwist 我在破坏它吗?我只需要让微调器添加它的内容。但我认为当布局膨胀时我需要添加这些。它似乎有效。
-
如果您将内容视图更改为其他内容,那么微调器将不存在?对不起,如果我错过了重点。
-
我同意@HenryTwist,我老实说不明白你在这里要做什么
-
我认为
R.layout.activity_main是您的活动布局(对我来说非常直观)。那么R.id.new_widget_layout到底代表什么?
标签: android kotlin setcontentview