首页 文章

EditText内容验证

提问于
浏览
0

我正在验证我的 EditText 内容,

我用过验证我的 EditText 内容

String enteredUserName = userName.getText().toString();
String enteredPassword = userPassword.getText().toString();

if( enteredUserName != " " && enteredPassword != " " ) {
    createNewAccount();
}

但上面对我不起作用,那么我看到了这个的解决方案,

if( enteredUserName.length() != 0 && enteredPassword.length() != 0 ) {
    createNewAccount();
}

它对我来说很完美

我的问题是,为什么我的第一个代码片段不起作用,而我在java中使用上面的代码进行验证 . 谢谢

Edit2

setContentView( R.layout.create_account_activity_layout );
btn = ( Button ) findViewById( R.id.create_account_btn );
userName = ( EditText ) findViewById( R.id.name );
userPassword = ( EditText ) findViewById( R.id.password );

enteredUserName = userName.getText().toString().trim();
enteredPassword = userPassword.getText().toString().trim();

userName.addTextChangedListener(new TextWatcher() {
        @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( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
                   createNewAccount();
               }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

userPassword.addTextChangedListener(new TextWatcher() {     
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub
         if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
               createNewAccount();
           }
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub          
    }

    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub  
    }
});

Edit3

String enteredUserName; 
String enteredPassword;

@Override
protected void onCreate( Bundle savedInstanceState ) {
    // TODO Auto-generated method stub
    super.onCreate( savedInstanceState );

    setContentView( R.layout.create_account_activity_layout );
    btn = ( Button ) findViewById( R.id.create_account_btn );
    userName = ( EditText ) findViewById( R.id.name );
    userPassword = ( EditText ) findViewById( R.id.password );

    enteredUserName = userName.getText().toString().trim();
    enteredPassword = userPassword.getText().toString().trim();

    userName.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                enteredUserName = userName.getText().toString();
                enteredPassword = userPassword.getText().toString();
                 if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
                       createNewAccount();
                 }
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });

    userPassword.addTextChangedListener(new TextWatcher() {         
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
             enteredUserName = userName.getText().toString();
             enteredPassword = userPassword.getText().toString();
             if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
                   createNewAccount();
               }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

    /*while( enteredUserName.toString().isEmpty() || enteredPassword.toString().isEmpty() ) {
        Toast.makeText(CreateAccountActivity.this, "Please enter proper user name and password", Toast.LENGTH_SHORT).show();
        userName = ( EditText ) findViewById( R.id.name );
        userPassword = ( EditText ) findViewById( R.id.password );
        enteredUserName = userName.getText().toString().trim(); 
        enteredPassword = userPassword.getText().toString().trim();
    }*/
    /*  while( userName.getText().toString().equals("")  && userPassword.getText().toString().equals("") ) {
        Toast.makeText(CreateAccountActivity.this, "Please enter proper user name and password", Toast.LENGTH_SHORT).show();        
    }*/
    btn.setOnClickListener( this );
}

Edit4

protected void onCreate( Bundle savedInstanceState ) {
    // TODO Auto-generated method stub
    super.onCreate( savedInstanceState );

    setContentView( R.layout.create_account_activity_layout );
    btn = ( Button ) findViewById( R.id.create_account_btn );
    userName = ( EditText ) findViewById( R.id.name );
    userPassword = ( EditText ) findViewById( R.id.password );

    //enteredUserName = userName.getText().toString().trim();
    //enteredPassword = userPassword.getText().toString().trim();

    TextWatcher textWatcher = new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String enteredUserName = userName.getText().toString();
            String enteredPassword = userPassword.getText().toString();
            if (enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0) {
                Toast.makeText(CreateAccountActivity.this, "test", Toast.LENGTH_LONG).show();
            }
        }

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

        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    };
    userName.addTextChangedListener(textWatcher);
    userPassword.addTextChangedListener(textWatcher);

    /*
    userName.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

             enteredUserName = userName.getText().toString();
             enteredPassword = userPassword.getText().toString();
             if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
                   createNewAccount();
             }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

    userPassword.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
             enteredUserName = userName.getText().toString();
             enteredPassword = userPassword.getText().toString();
             if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
                   createNewAccount();
               }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });
    */
    /*while( enteredUserName.toString().isEmpty() || enteredPassword.toString().isEmpty() ) {
        Toast.makeText(CreateAccountActivity.this, "Please enter proper user name and password", Toast.LENGTH_SHORT).show();
        userName = ( EditText ) findViewById( R.id.name );
        userPassword = ( EditText ) findViewById( R.id.password );
        enteredUserName = userName.getText().toString().trim(); 
        enteredPassword = userPassword.getText().toString().trim();
    }*/
    /*  while( userName.getText().toString().equals("")  && userPassword.getText().toString().equals("") ) {
        Toast.makeText(CreateAccountActivity.this, "Please enter proper user name and password", Toast.LENGTH_SHORT).show();
    }*/
    btn.setOnClickListener( this );
}

7 回答

  • 2

    试试这个:

    String enteredUserName = userName.getText().toString().trim();
     String enteredPassword = userPassword.getText().toString().trim();
    
     if( !enteredUserName.equalsIgnoreCase("")
          && !enteredPassword.equalsIgnoreCase("") )
     {
          createNewAccount();
     }
    
  • 0

    您的第一个解决方案不起作用,因为您尝试将文本实例与仅包含一个空格的String实例进行比较 .

    第二种解决方案是可行的,但是如果用户将写入空格,则将验证条件,因此在检查条件之前,您应该 trim() ,如下面的代码所示:

    if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
         createNewAccount();
    }
    

    trim() 方法从 String 删除白色标记

    或者您可以使用String类中的方法 isEmpty()

    如果您想要识别用户在 EditText 上更改文本的情况,您应该使用 TextWatcher ,如下面的代码所示:

    editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
            }
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                   String enteredUserName = userName.getText().toString();
                   String enteredPassword = userPassword.getText().toString();
                   if( enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0){
                       createNewAccount();
                   }
            }
    
            @Override
            public void afterTextChanged(Editable s) {
    
            }
        });
    

    添加TextWatcher,如我为 userNameuserPassword 所示

    EDIT

    将onCreate方法更改为以下方法:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.create_account_activity_layout);
        Button btn = (Button) findViewById( R.id.create_account_btn );
        final EditText userName = (EditText) findViewById(R.id.name);
        final EditText userPassword = (EditText) findViewById(R.id.password);
        userName.addTextChangedListener(textWatcher);
        userPassword.addTextChangedListener(textWatcher);
        btn.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String enteredUserName = userName.getText().toString();
                String enteredPassword = userPassword.getText().toString();
                if (enteredUserName.trim().length() != 0 && enteredPassword.trim().length() != 0) {
                    createNewAccount();
                }else{
                    Toast.makeText(MainActivity2.this, "Fill both fields", Toast.LENGTH_LONG).show();
                }
            }
        });
    
    }
    
  • 0

    比较字符串你必须这样做:

    if( !enteredUserName.equals(" ") && !enteredPassword.equals(" ") ) {
          createNewAccount();
     }
    

    为了比较字符串总是使用方法equals()或equalsIgnoreCase()如果大写字母不重要

  • 1

    你做了字符串比较=这是不可能的 - 只需使用

    if(!enteredUserName.equals("") && !enteredPassword.equals(""))
    
  • 0

    试试这个

    String enteredUserName = userName.getText().toString();
         String enteredPassword = userPassword.getText().toString();
    
         if( !enteredUserName.equals("") && !enteredPassword.equals("") ) {
              createNewAccount();
         }
    

    此外

    阅读本文档http://docs.oracle.com/javase/6/docs/api/java/lang/String.html

    其他方案

    String enteredUserName = userName.getText().toString();
             String enteredPassword = userPassword.getText().toString();
    
             if( !enteredUserName.isEmpty() && !enteredPassword.isEmpty() ) {
                  createNewAccount();
             }
    
  • 0

    你不能用!=来比较字符串,你不能把它与它比较:

    • if(enteredUserName.equals("") && enteredPassword.equals(""))

    • if(enteredUserName.toString().isEmpty() && enteredPassword.toString().isEmpty()

    • if(enteredUserName.matches("") && enteredPassword.matches("")

    比较它有很多可能性,但那些是最正确的IMO .

    希望能帮助到你 :)

    EDIT

    如果你想使用长度一种方式使用它将是:

    if (enteredUserName.getText().length() == 0) && (enteredPassword.getText().length() == 0)
    

    EDIT2

    尝试这个逻辑,让我知道它是否有效 .

    String enteredUserName = userName.getText().toString();
     String enteredPassword = userPassword.getText().toString();
    
     Boolean ok;
     ok = false;
     while (!ok) {
        if (!enteredUserName.equals("") && !enteredPassword.equals("")){
            ok = true;
            createNewAccount();
            //user and password are not empty or you can do your 
        }
        else {
            //do something to repeat this, because user or password is empty
        }
     }
    
  • 0

    你应该用

    if ( !TextUtils.isEmpty("enteredUserName")) {
         // createNewAccount();
        }
    

相关问题