2014-09-19 38 views
0

我有兩個用於用戶名和密碼的edittext,我使用seterror方法顯示錯誤,當它們都是空的。問題是當錯誤消息彈出在第二個字段密碼字段),部分信息丟失。此錯誤僅適用於較舊的設備。如何確保錯誤不會發生在較舊的設備中。在android中使用seterror方法驗證edittext

我的代碼:

public class SignInPage extends Activity { 

    EditText txtusername,txtpassword; 
    Button btnlogin; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.signinpage); 
     txtusername=(EditText) findViewById(R.id.txtusername); 
     txtpassword=(EditText) findViewById(R.id.txtpassword); 
     btnlogin=(Button) findViewById(R.id.btnlogin); 
     btnlogin.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if(txtusername.getText().toString().trim().equals("")) 
       { 
        txtusername.setError("Username is mandatory"); 
        txtusername.requestFocus(); 
       } 
       if(txtpassword.getText().toString().trim().equals("")) 
       { 
        txtpassword.setError("Password is mandatory"); 
        txtpassword.requestFocus(); 
       } 
       else 
       { 
        Toast.makeText(getApplicationContext(),"Checking with server",Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 
+0

當你說所顯示的錯誤部分是因爲它得到了屏幕的?或者只是它不完全出現 – zozelfelfo 2014-09-19 06:30:57

+3

張貼截圖 – 2014-09-19 06:31:17

+0

可以請你張貼屏幕截圖嗎? – Umair 2014-09-19 06:34:15

回答

0

試試這個它可以幫助您

fname = FirstName.getText().toString().trim(); 
if(fname.isEmpty()) //&& fname.matches("[a-zA-Z ]+")) 
      { 
       FirstName.requestFocus(); 
       FirstName.setError(Html.fromHtml("<font color='red'>Please enter the First name</font>")); 
      } 
TextWatcher textWatcher = new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) 
     { } 

     @Override 
     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) 
     { } 

     @Override 
     public void afterTextChanged(Editable arg0) 
     { 
      if(arg0.toString().isEmpty()) 
      { 
       return; 
      } 

      if (FirstName.getText() == arg0) { 
       Validate(FirstName); 
FirstName.addTextChangedListener(textWatcher); 

public void Validate(EditText et) {  
    et.setError(null); 
} 
+0

我認爲問題在於彈出軟鍵盤時,錯誤消息會進入edittext的頂部,因此會顯示部分內容。 – user3852672 2014-09-19 06:36:55

+0

@ user3852672你可以發佈屏幕截圖,然後我將能夠更精確地幫助你... :) – Umair 2014-09-19 06:38:20

+0

@ user3852672我在我的表單上運行此驗證,即使鍵盤彈出,它也能正常工作。屏幕截圖或代碼,如果你可以.. – Umair 2014-09-19 06:39:31