[英]Reset Content View in Android
我有对话框,其中包括一个约束布局(“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,这样我才能获得微调器的 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 的代码,它就可以工作。
您可以重新启动活动并使用类似的条件
if(Common.layoutType ==1)
setContentView(R.layout.activity_main)
else
setContentView(R.layout.your_layout)
在 onClickListener 中,您可以将一个值存储在 common class 中(如果没有的话)
Public class Common
{
Public static int layoutType = 1;
}
并在 onClickListener
Common.layoutType = YOUR_DESIRED_VALUE;
startActivity(); /// again start the same activity
当活动重新启动时,在检查期间它将自动相应地设置所需的布局。
随意询问是否有不清楚的地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.