Android:尝试实现“如果edittext为空,则无法继续下一个活动”,卡住了

时间:2017-08-01 18:24:28

标签: java android android-edittext

我正在尝试在Android中实现,如果编辑文本字段为空,则禁用下一个活动按钮的方法,例如用户名和密码登录界面。

到目前为止,这是我的代码,即崩溃提交按钮。 它可能很简单但我今天似乎无法看到它。欢迎任何帮助,谢谢

{{1}}

以下是错误的logcat:

{{1}}

3 个答案:

答案 0 :(得分:1)

尝试将 if condition 更改为:

if (passwordSave.getText().toString().equals("")) {
}

<强>更新

检查 edittext 是否为空的其他方法:

if (TextUtils.isEmpty(passwordSave.getText().toString().trim())) {
        Snackbar snackbar = Snackbar
                .make(view, "Please fill in your password", Snackbar.LENGTH_LONG)
                .setAction("Close", new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                    }
                });

        snackbar.setActionTextColor(Color.RED);


        View sbView = snackbar.getView();
        TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
        textView.setTextColor(Color.WHITE);
        snackbar.show();
        return;
    } else {
    Intent addEntryIntent = new Intent(this, homePage.class);
    startActivity(addEntryIntent);

    finish();
}

答案 1 :(得分:0)

如果您仔细阅读了堆栈跟踪,则会注意到您已收到NullPointerException

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Object.equals(java.lang.Object)' on a null object reference

这意味着您passwordSave的作业已返回null。确保您已正确地在XML文件中提供了EditText该ID,并且您已正确拼写所有内容。

最重要的是你的if条件问题。

if (passwordSave.equals("")) {

passwordSave是对EditText的引用,而不是用户输入的文本。正如@Bruno Ferreira在回答中所说,你必须将条件改为

if (passwordSave.getText().toString().equals("")) {

答案 2 :(得分:0)

您在“submitPassword”方法中将EditText对象与String进行比较。 这是你的错误:

if (passwordSave.equals(""))

从editText获取字符串:     passwordSave.getText()。的toString()