2012-05-30 48 views
1

在我的表单中,我有一个CeckBox,并且需要检查它是否需要提交。如果未选中,我会调用setError()来警告用户。但是,一旦显示错误,不管复选框是否被选中,它都不会消失。 其他错误是,如果错误文本太长,它看起来不完整。在横向模式下,它看起来完整。复选框错误在检查后不会消失

复选框XML:

<CheckBox 
     android:id="@+id/reg_terms" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Li e concordo com os Termos de Uso." 
     android:focusableInTouchMode="true" 
     android:focusable="true" 
     android:textColor="#000000" 
     android:checked="false" 
     /> 

验证(内submitButtons的onClick):

if(!reg_terms.isChecked()){ 
    reg_terms.setError("É preciso aceitar os Termos de Uso"); 
    validation = false; 
    } 

没有任何 “addOnFocusChangedListener” methot,我可以用 “辞退” 的错误,如果用户检查框?我怎样才能避免错误文本显示不完整?

Viele dankefüralle Hilfe。 :d

回答

4

至于清除错误,你可以添加一个OnCheckedChangeListener这样的:

reg_terms.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if (isChecked) { 
      reg_terms.setError(null); 
     } else { 
      reg_terms.setError("É preciso aceitar os Termos de Uso"); 
     } 
    } 
}); 

就个人而言,我会提取字符串到您的R.strings以及和在XML中引用它和码。

对于文字环绕,请尝试将reg_terms.setMaxLines(2)添加到您的代码中,以允许文本最多填充2行。我不确定这是否可行,但值得一试。

+0

您的代码清除错误工作正常,谢谢!只需要@覆盖onCheckedChanged。但错误文本仍然被切断,我想我只会使用较短的文本。 –

+0

由于一些奇怪的原因,只有在submitButtons的onClick内部调用setError时,字符串才会显示为不完整。当它在@ frenziedherring的代码中被调用时,它看起来是完整的。 –

+0

使用以下方式解决: if(!reg_terms.isChecked()){ \t reg_terms.requestFocus(); \t reg_terms.setError(“épreciso aceitar os Termos de Uso。”); \t validation = false; \t} –