2013-03-21 62 views
-3

我有單一屏幕上的兩個edittexts與具有最大長度11 n以外作爲12.兩個EDITTEXT驗證

現在我想以下這兩個edittexts驗證之一。

1.只有1個edittext的值應該傳遞到下一個屏幕。這是必須的。只有一個值必須傳遞到下一個屏幕。 2.如果用戶開始輸入任何編輯文本,那麼他應該被迫輸入最少11或12位數字到各自的編輯文本中。

此驗證是在按鈕單擊屏幕上完成的。

任何想法?

回答

0

您可以在各個領域的EditText XML文件使用

android:maxLength="11" 

android:maxLength="12" 

並將該值傳遞給下一個活動。你可以使用意圖。

在第一項活動:

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"); 

希望其明確的。

1

您應該使用EditText onChangeListener重新計算每次用戶輸入任何文本時的字符數。每次爲任一EditText小部件觸發onChangeListener時,請計算字符數,並根據字符數啓用或禁用移至下一個屏幕的Button。

0

可以驗證使用setError屬性中編輯框 mUserNameView是我的EditText 和 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 

在定義值在資源文件夾中的字符串

根據您的需要調整登錄名。我已經給出了代碼示例如何在代碼中進行驗證。和(不管你在字符串文件中指定的)錯誤信息在特定的編輯框中鍵入一個非常美麗的方式產生,

1

檢查以下內容: 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 

     } 
    }); 


} 

並按照此鏈接將值傳遞給下一個意圖:here