繁体   English   中英

重置 Android 中的内容视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM