如何清除方向更改时的EditText错误状态

时间:2014-03-15 19:44:14

标签: android android-edittext

当方向屏幕改变时,我需要清除EditText的错误。我尝试在onStart()方法中设置setError(null),但它不起作用。

我在新项目上试过了,但还没有用。我点击按钮,字段设置错误,当我改变方向时,我希望,错误清除,但它确实无法正常工作。

public class MainActivity extends ActionBarActivity {

EditText text;
Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    text = (EditText) findViewById(R.id.et);
    btn = (Button) findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            text.setError("Error");
        }
    });
}

@Override
public void onStart(){
    super.onStart();
    text.setError(null);
}

}

2 个答案:

答案 0 :(得分:1)

<强>更新

似乎你必须清除onPause而不是onResume / onStart上的错误:

    @Override
    protected void onPause(){
        super.onPause();
        text.setError(null);
    }

以上对我有用。

<强> OLD

Android将根据方向更改自动处理EditText及其状态。

如果你想自己处理状态,你需要实现并覆盖 onSaveInstanceState 而不是调用super()。除非您需要处理其他内容的恢复,否则您不需要覆盖onRestoreInstanceState。

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
}


@Override
protected void onSaveInstanceState(Bundle outState) {
    //super.onSaveInstanceState(outState);
}

答案 1 :(得分:0)

方向发生变化时,我会这样做。

public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);

            // Checks the orientation of the screen
            if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {

                text.setError(null);

            } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
                text.setText("Something");
            }
          }

如果要清除“错误消息”并且如果方向再次更改,则可以将TextView的值设置为text.setText(“”),只需将文本设置为您想要的任何内容即可。