我在单个屏幕上有两个编辑文本,一个最大长度为 11,另一个为 12。
现在我想对这两个编辑文本进行以下验证。
1.只有1个edittext的值应该传递到下一个屏幕。这是强制性的..只有一个的值必须传递到下一个屏幕。2.如果用户开始输入任何编辑文本,那么他应该被迫在各自的编辑文本中输入最少 11 或 12 位数字。
此验证将在屏幕上单击按钮时完成。
有任何想法吗?
我在单个屏幕上有两个编辑文本,一个最大长度为 11,另一个为 12。
现在我想对这两个编辑文本进行以下验证。
1.只有1个edittext的值应该传递到下一个屏幕。这是强制性的..只有一个的值必须传递到下一个屏幕。2.如果用户开始输入任何编辑文本,那么他应该被迫在各自的编辑文本中输入最少 11 或 12 位数字。
此验证将在屏幕上单击按钮时完成。
有任何想法吗?
EditText onChangeListener
每次用户输入任何文本时,您都应该使用重新计算字符数。每次onChangeListener
为您的任何一个 EditText 小部件触发时,计算字符数并根据字符数启用或禁用移动到下一个屏幕的按钮。
检查以下内容:xml:
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="43dp"
android:maxLength="11"
android:ems="10" >
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText1"
android:layout_centerHorizontal="true"
android:layout_marginTop="44dp"
android:maxLength="12"
android:ems="10" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText2"
android:layout_centerHorizontal="true"
android:layout_marginTop="130dp"
android:text="Button" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/editText1"
android:text=""
android:visibility="invisible"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText2"
android:layout_below="@+id/editText2"
android:text=""
android:visibility="invisible"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/editText3"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_alignLeft="@+id/editText1"
android:layout_alignParentTop="true"
android:ems="10" />
和类:
public class MainActivity extends Activity {
EditText et1,et2,et3;
Button btn;
TextView tv1,tv2;
@Override
protected void onStart() {
et3.requestFocus();
super.onStart();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1=(EditText)findViewById(R.id.editText1);
et2=(EditText)findViewById(R.id.editText2);
et3=(EditText)findViewById(R.id.editText3);
btn=(Button)findViewById(R.id.button);
tv1=(TextView)findViewById(R.id.textView1);
tv2=(TextView)findViewById(R.id.textView2);
addListenerOnTextChangeEt1Text();
addListenerOnTextChangeEt2Text();
et1.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean hasFocus) {
if(!hasFocus){
tv1.setVisibility(View.INVISIBLE);
tv1.setVisibility(View.GONE);
}
else{
tv1.setVisibility(View.VISIBLE);
}
}
});
et2.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean hasFocus) {
if(!hasFocus){
tv2.setVisibility(View.INVISIBLE);
tv2.setVisibility(View.GONE);
}
else{
tv2.setVisibility(View.VISIBLE);
}
}
});
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(et1.getText().toString().length()<11 || et2.getText().toString().length()<12 ){
Toast.makeText(getBaseContext(), "check both edittext data", Toast.LENGTH_SHORT).show();
}
else if(et1.getText().toString().length()==11 && et2.getText().toString().length()==12){
Toast.makeText(getBaseContext(), "Show next Page", Toast.LENGTH_SHORT).show();
}
else{
Log.v("Error","");
}
}
});
}
private void addListenerOnTextChangeEt1Text(){
et1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int et1StringLength=et1.getText().toString().length();
Log.v("et1StringLength","--->"+et1StringLength);
int num=11-(et1StringLength);
if(et1StringLength<11){
tv1.setText("Enter"+num+"Characters more");
}
else if(et1StringLength==11){
tv1.setText("Correct");
}
else{
Log.v("Error","");
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
}
private void addListenerOnTextChangeEt2Text(){
et2.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int et2StringLength=et2.getText().toString().length();
Log.v("et2StringLength","--->"+et2StringLength);
int num=12-(et2StringLength);
if(et2StringLength<12){
tv2.setText("Enter"+num+"Characters more");
}
else if(et2StringLength==12){
tv2.setText("Correct");
}
else{
Log.v("Error","");
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
}
并按照此链接将值传递给下一个意图:这里
您可以使用
android:maxLength="11"
和
android:maxLength="12"
在相应的edittext字段的xml文件中。
并将值传递给下一个活动。您可以使用意图。
在第一个活动中:
String s = myEdtxt.getText().toString();
Intent i = new Intent(this, NextAct.class);
i.putStringArrayListExtra("My Value", s);
startActivity(i);
您可以在第二个活动中检索它:
String s= getIntent().getStringExtra("My Value");
希望它清楚。
您可以使用setError
EditBox 的属性
进行验证mUserNameView是我的编辑文本,而
mUserName是一个字符串,我在其中使用 editText 值来执行验证
mUserNameView.setError(null);
// Store values at the time of the login attempt.
mUserName = mUserNameView.getText().toString();
// Check for a valid email address.
if (TextUtils.isEmpty(mUserName)) {
mUserNameView.setError(getString(R.string.error_field_required));
}
if (mUserName.length() > 13)
{
mUserNameView.setError(getString(R.string.error_field_notValid));
}
R.string.error_field_required
R.string.error_field_notValid
在资源的 values 文件夹中的字符串中定义
根据您的需要调整登录。我已经给出了代码示例如何在代码中进行验证。并且错误消息(无论您在字符串文件中指定什么)在特定的编辑框上以非常漂亮的方式生成,