简单布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.infinitebounds.myapplication.Main2Activity">
<android.support.design.widget.TextInputLayout
android:id="@+id/tip"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="hint" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
如果首次初始化活动,我将禁用textInputLayout
:
class Main2Activity : AppCompatActivity() {
lateinit var tip: TextInputLayout
lateinit var et: EditText
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
tip = findViewById(R.id.tip) as TextInputLayout
et = findViewById(R.id.et) as EditText
if (savedInstanceState == null) tip.isEnabled = false
}
}
我检查了“不要保持活动”#34;选项。
因此,最初启动活动时,TextInputLayout
被禁用。当我按下主页并返回时,它会再次重新启用。
所以我的问题是:
TextInputLayout
?修改
这似乎也发生在EditText
上。
答案 0 :(得分:0)
这是预期的行为吗?
是的,它是(假设“不要保持活动”被选中)。
第一次启动应用时,savedInstanceState
为空 - 您的if
检查通过并将TextInputLayout
的状态设置为已禁用。
只要您按主页按钮然后返回,系统就会调用onCreate()
,但这次savedInstanceState
不为空 - 您的if
检查确实不传递。
如何在重新创建时禁用TextInputLayout?
完全摆脱if
检查,这没用。直接在tip.isEnabled = false
内执行onCreate()
,或在xml
android:enabled="false"
中执行此操作。