【问题标题】:app crashes after button clicked with empty edit text单击带有空编辑文本的按钮后应用程序崩溃
【发布时间】:2017-10-25 11:20:00
【问题描述】:

嗨,亲爱的!我需要你的帮助(请帮我解决问题。

点击按钮后应用程序崩溃,编辑文本为空((

我无法解决这个问题。 我添加了这个运算符 IF :if (etText.getText().toString().trim().length()> 0) 但它不能解决问题。

我有一点开发经验,这段代码是我在 YouTube 的课上看到的

如果你能帮助我,我会很高兴,对于大量的代码,我很抱歉

    public class DriverLoginActivity extends AppCompatActivity {
    private EditText mEmail, mPassword;
    private Button mLogin, mRegistration;

    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener firebaseAuthListener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_driver_login);  

        mAuth = FirebaseAuth.getInstance();

        firebaseAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();    

                if(user!=null){
                    Intent intent = new Intent(DriverLoginActivity.this, MapActivity.class);
                    startActivity(intent);
                    finish();
                    return;
                }
            }
        };

        mEmail = (EditText) findViewById(R.id.email);
        mPassword = (EditText) findViewById(R.id.password);
        mLogin = (Button) findViewById(R.id.login);
        mRegistration = (Button) findViewById(R.id.registration);

        mRegistration.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mEmail.getText().toString().trim().length()< 0)
                    if (mPassword.getText().toString().trim().length()< 0);

                final String email = mEmail.getText().toString();
                final String password = mPassword.getText().toString();

                mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(DriverLoginActivity.this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if(!task.isSuccessful() ){
                            Toast.makeText(DriverLoginActivity.this, "sign up error", Toast.LENGTH_SHORT).show();    
                        }else{
                            String user_id = mAuth.getCurrentUser().getUid();
                            DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users").child("Riders").child(user_id);
                            current_user_db.setValue(true);
                        }
                    }
                });
            }
        });

        mLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String email = mEmail.getText().toString();
                final String password = mPassword.getText().toString();
                mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(DriverLoginActivity.this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if(!task.isSuccessful()){
                            Toast.makeText(DriverLoginActivity.this, "sign in error", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        mAuth.addAuthStateListener(firebaseAuthListener);
    }

    @Override
    protected void onStop() {
        super.onStop();
        mAuth.removeAuthStateListener(firebaseAuthListener);
    }
  }
}

【问题讨论】:

  • 粘贴你的错误日志
  • 请发布错误日志
  • 在你的代码中我找不到任何地方:etText.getText().toString().trim().length()&gt; 0!?!?仅相关的是:1)if (mEmail.getText().toString().trim().length()&lt; 0) 和 2)if (mPassword.getText().toString().trim().length()&lt; 0);

标签: java android


【解决方案1】:

我认为这些代码行有点令人困惑,而且您没有检查 mEmail.getText() 中的空指针异常,因此调用 mEmail.getText().toString() 可能会导致抛出 NullPointerException 并使您的应用程序崩溃(以防万一你发送空文本)。

 if (mEmail.getText().toString().trim().length()< 0)
                if (mPassword.getText().toString().trim().length()< 0);
 final String email = mEmail.getText().toString();
            final String password = mPassword.getText().toString();

应该是:

 if ((mEmail.getText() != null && mEmail.getText().toString().trim().length() > 0 ) && (mPassword.getText() != null && mPassword.getText().toString().trim().length() > 0)) {

    final String email = mEmail.getText().toString();
    final String password = mPassword.getText().toString();
    // rest of your code below
}

【讨论】:

  • 非常感谢您帮了我很多忙!
【解决方案2】:

这些字段可能没有正确设置:

mEmail = (EditText) findViewById(R.id.email);
mPassword = (EditText) findViewById(R.id.password);

用调试器检查这两个变量都不为空。如果它们为空,您可能在布局文件activity_driver_login.xml 中有问题。也许没有带有emailpassword 的编辑文本。

【讨论】:

    【解决方案3】:

    错误是在你的第二个 if 条件最后你使用; 并且条件应该相反。检查此代码

    public class DriverLoginActivity extends AppCompatActivity {
        private EditText mEmail, mPassword;
        private Button mLogin, mRegistration;
    
        private FirebaseAuth mAuth;
        private FirebaseAuth.AuthStateListener firebaseAuthListener;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_driver_login);
    
            mAuth = FirebaseAuth.getInstance();
    
            firebaseAuthListener = new FirebaseAuth.AuthStateListener() {
                @Override
                public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                    if(user!=null){
                        Intent intent = new Intent(DriverLoginActivity.this, MapActivity.class);
                        startActivity(intent);
                        finish();
                        return;
                    }
                }
            };
            mEmail = (EditText) findViewById(R.id.email);
            mPassword = (EditText) findViewById(R.id.password);
            mLogin = (Button) findViewById(R.id.login);
            mRegistration = (Button) findViewById(R.id.registration);
            mRegistration.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (!mEmail.getText().toString().isEmpty() && !mPassword.getText().toString().isEmpty())
                        if (mPassword.getText().toString().trim().length()> 0 && mEmail.getText().toString().trim().length()> 0 ){
                            final String email = mEmail.getText().toString();
                            final String password = mPassword.getText().toString();
                            mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(DriverLoginActivity.this, new OnCompleteListener<AuthResult>() {
                                @Override
                                public void onComplete(@NonNull Task<AuthResult> task) {
                                    if(!task.isSuccessful() ){
                                        Toast.makeText(DriverLoginActivity.this, "sign up error", Toast.LENGTH_SHORT).show();
                                    }else{
                                        String user_id = mAuth.getCurrentUser().getUid();
                                        DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users").child("Riders").child(user_id);
                                        current_user_db.setValue(true);
                                    }
                                }
                            });
                        }
                    }
                });
            mLogin.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    final String email = mEmail.getText().toString();
                    final String password = mPassword.getText().toString();
                    mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(DriverLoginActivity.this, new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            if(!task.isSuccessful()){
                                Toast.makeText(DriverLoginActivity.this, "sign in error", Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
    
                }
            });
        }
    
    
        @Override
        protected void onStart() {
            super.onStart();
            mAuth.addAuthStateListener(firebaseAuthListener);
        }
        @Override
        protected void onStop() {
            super.onStop();
            mAuth.removeAuthStateListener(firebaseAuthListener);
        }
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-01
      • 2011-10-21
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      相关资源
      最近更新 更多