Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想在点击设备键盘“完成”按钮时验证多个编辑文本_Java_Android_Validation - Fatal编程技术网

Java 我想在点击设备键盘“完成”按钮时验证多个编辑文本

Java 我想在点击设备键盘“完成”按钮时验证多个编辑文本,java,android,validation,Java,Android,Validation,我有四个edittext(atm pin之类的东西),我想在点击键盘上的“完成”按钮时验证所有这四个edittext(验证如-空或错误的pin)。到目前为止,我可以得到验证,但只有当我点击两次完成按钮时才会发生。无法解决问题,请帮助。我是初学者。谢谢 下面是我的代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFea

我有四个edittext(atm pin之类的东西),我想在点击键盘上的“完成”按钮时验证所有这四个edittext(验证如-空或错误的pin)。到目前为止,我可以得到验证,但只有当我点击两次完成按钮时才会发生。无法解决问题,请帮助。我是初学者。谢谢

下面是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.pin_new);


setTextFocus(edtpin1, edtpin2);
setTextFocus(edtpin2, edtpin3);
setTextFocus(edtpin3, edtpin4);
setTextFocus(edtpin5, edtpin6);
setTextFocus(edtpin6, edtpin7);
setTextFocus(edtpin7, edtpin8);


edtpin1.setOnEditorActionListener(new OnEditorActionListener(){

@Override
public boolean onEditorAction(TextView v, int arg1, KeyEvent arg2) {

switch (v.getId()) {
case R.id.btnBackPin:
  Intent i = new Intent(getApplicationContext(),RegistrationProfileEmail.class);
  startActivity(i);
  break;

case R.id.btnCancelPin:
  Intent in = new Intent(getApplicationContext(),Exit.class);
  finish();
  startActivity(in);
  break;

case R.id.btnConfirmPin:

  String s = new String();
  s = edtpin1.getText().toString() + edtpin2.getText().toString()
      +edtpin3.getText().toString()    + edtpin4.getText().toString();

if ((edtpin5.getText().toString().trim().isEmpty())
|| (edtpin1.getText().toString().trim().isEmpty())
|| (edtpin2.getText().toString().trim().isEmpty())
|| (edtpin4.getText().toString().trim().isEmpty())
|| (edtpin3.getText().toString().trim().isEmpty())
|| (edtpin6.getText().toString().trim().isEmpty())
|| (edtpin7.getText().toString().trim().isEmpty())
|| (edtpin8.getText().toString().trim().isEmpty())) {
Toast.makeText(getApplicationContext(), "Enter the Pin",
Toast.LENGTH_SHORT).show();

edtpin1.setText(null);
edtpin2.setText(null);
edtpin3.setText(null);
edtpin4.setText(null);
edtpin5.setText(null);
edtpin6.setText(null);
edtpin7.setText(null);
edtpin8.setText(null);
edtpin1.requestFocus();


} 

else if      (edtpin1.getText().toString().trim().equalsIgnoreCase(edtpin5.getText().toString().trim())&&   edtpin2.getText().toString().trim().equalsIgnoreCase(
                                                 edtpin6.getText().toString().trim()) && edtpin3.getText().toString().trim().equalsIgnoreCase(                                                     edtpin7.getText().toString().trim()) && edtpin4.getText().toString().trim().equalsIgnoreCase(                                                       edtpin8.getText().toString().trim())) 
 {
  s = edtpin1.getText().toString() + edtpin2.getText().toString()
      + edtpin3.getText().toString()
      + edtpin4.getText().toString();
      RegistrationPin.this.setPin(s);

  }
            // TODO move to payment option

else {

Toast.makeText(getApplicationContext(), "Pin is not matching",Toast.LENGTH_SHORT).show();
edtpin1.setText(null);
edtpin2.setText(null);
edtpin3.setText(null);
edtpin4.setText(null);
edtpin5.setText(null);
edtpin6.setText(null);
edtpin7.setText(null);
edtpin8.setText(null);
edtpin1.requestFocus();
}
break;
default:
break;
}


return false;



}

});

}

创建一个类并实现textwatcher,如下所示:

    private class CheckTextifEmpty implements TextWatcher {
    @Override
    public void afterTextChanged(Editable s) {
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
        if (isEmptyCharacters(serverNumber)
                || isEmptyCharacters(textview1)
                || isEmptyCharacters(textview2)
                || isEmptyCharacters(textview3)) {
            //do something here

        } else {
            //do something here
        }
    }
}
textview1.addTextChangedListener(new CheckTextIfEmpty());
   private boolean checkifValidate(TextView view1,View TextView2){
      return view1.getText().toString().trim().contentEquals(view2.getText().toString());
并在此处添加此方法:

private boolean isEmptyCharacters(TextView v) {
    return v.getText().toString().trim().isEmpty();
}
并在文本视图中使用它,如下所示:

    private class CheckTextifEmpty implements TextWatcher {
    @Override
    public void afterTextChanged(Editable s) {
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
        if (isEmptyCharacters(serverNumber)
                || isEmptyCharacters(textview1)
                || isEmptyCharacters(textview2)
                || isEmptyCharacters(textview3)) {
            //do something here

        } else {
            //do something here
        }
    }
}
textview1.addTextChangedListener(new CheckTextIfEmpty());
   private boolean checkifValidate(TextView view1,View TextView2){
      return view1.getText().toString().trim().contentEquals(view2.getText().toString());
您可以像这样使用验证,而无需使用按钮

像这样重构代码:

    private class CheckTextifEmpty implements TextWatcher {
    @Override
    public void afterTextChanged(Editable s) {
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before,
            int count) {
        if (isEmptyCharacters(serverNumber)
                || isEmptyCharacters(textview1)
                || isEmptyCharacters(textview2)
                || isEmptyCharacters(textview3)) {
            //do something here

        } else {
            //do something here
        }
    }
}
textview1.addTextChangedListener(new CheckTextIfEmpty());
   private boolean checkifValidate(TextView view1,View TextView2){
      return view1.getText().toString().trim().contentEquals(view2.getText().toString());
}


希望它有帮助,

我希望它与设备键盘的“完成”按钮一起使用!!这段代码会调用它吗?
  edtpin1.setOnKeyListener(onSoftKeyboardDonePress);


  private View.OnKeyListener onSoftKeyboardDonePress=new View.OnKeyListener()
        {
            public boolean onKey(View v, int keyCode, KeyEvent event)
            {
                if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)
                {
                  edtpin1.getText().toString();
                  edtpin2.getText().toString();
                  edtpin3.getText().toString();
                  edtpin4.getText().toString(); 
                }
                return false;
            }
        };