我有一个带有EditText的TextInputLayout.
这是我的xml:
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Enter Text" />
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)
我的java代码:
((TextInputLayout) findViewById(R.id.textInputLayout)).setError("ERROR");
Run Code Online (Sandbox Code Playgroud)
当我调用setError("ERROR")时,标签(提示)颜色和EditText的底线颜色变为红色并出现错误.这是我期望的行为.
现在让我们说在销毁我的活动之前我不会调用setError(null).现在我再次打开相同的活动.我可以看到我的应用程序里面的所有EditText字段的底线都是红色的,虽然标签颜色似乎被重置并且错误消息被取消.这并不总是可重复的,但如果我继续尝试,我最终可以得到它.
我正在使用带有5.1.1的Nexus 4.
难道我做错了什么?
在我的android应用程序中,我有许多活动和片段,为了使代码可读和可重用,我为每个活动和片段都有帮助类.这些帮助程序类负责从填充动态视图到验证和网络相关任务的所有内容.
目前,我将Activity/Fragment的一个实例传递给每个帮助器类.我的理解是每个帮助程序都在活动中实例化,并将随活动一起销毁.
将弱引用传递给我的助手而不是强引用是否有任何优点/缺点?