0

我想验证“ username”和“ password”字段的编辑文本。我不希望用户将用户名和密码留为空白。我在这个站点中发现使用TextWatchern 添加addTextChangedListener我们可以处理这个..但是出现强制关闭错误..我对android很陌生,这是我的第一个应用程序。请告诉我哪里出错了。我有以下代码:

public class MainActivity extends Activity implements android.text.TextWatcher {

 public String userString;
 public EditText edt_Username;
 public EditText edt_pwd;
 @Override
 protected void onCreate(Bundle savedInstanceState)
 {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // for validating username textbox

          edt_Username=(EditText) findViewById(R.id.username);
    edt_Username.addTextChangedListener(this);



    //for validating pwd textbox
     edt_pwd=(EditText) findViewById(R.id.pwd);
    edt_pwd.addTextChangedListener(this);

}

@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;
}   
public void login(View view)
{

            Intent intent=new Intent(this,Leave_form.class);
            setContentView(R.layout.activity_leave_form);
            startActivity(intent);

}

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

    if( edt_Username.getText().toString().equals(null)||edt_pwd.getText().toString().equals(null))
    {
    Toast.makeText(MainActivity.this, "All Fields Required.", 
             Toast.LENGTH_SHORT).show();
    }


}

提前致谢..

4

3 回答 3

0

您需要检查文本是否为空:

public void afterTextChanged(Editable s) 
{

   if( edt_Username.getText() == null || edt_Username.getText().toString().equals("") || edt_pwd.getText() == null || edt_pwd.getText().toString().equals(""))
   {
       Toast.makeText(MainActivity.this, "All Fields Required.", 
         Toast.LENGTH_SHORT).show();
   }


}
于 2013-03-19T10:21:44.463 回答
0
Intent intent=new Intent(this,Leave_form.class); 
setContentView(R.layout.activity_leave_form);
startActivity(intent);

您正在调用只能调用一次的 login() 方法 setContentView()!在onCreate()方法中。

解决方案是删除此行并开始新Activity

Intent intent = new Intent(this, Leave_form.class); 
startActivity(intent);

然后打电话

setContentView(R.layout.activity_leave_form);

在onCreate() 方法中的Leave_form 类中。

更新:

在你的代码中还有更多的东西被破坏了:

edt_Username.getText().toString().equals(null)

如果要确定文本框是否为空,只需使用:

if (TextUtils.isEmpty(edt_User.getText().toString()) && ...) {
   Toast.makeText(context, "Fields are required!", Toast.LENGTH_SHORT).show();
}

注意: edt_Username.getText()将始终不为空。

于 2013-03-19T10:21:55.020 回答
0

首先允许用户输入他们的姓名和密码,并在点击按钮时输入一个登录按钮验证用户名和密码。

于 2013-03-19T10:26:21.290 回答