2017-10-25 11 views
-2

こんにちは!私は私が問題を解決してくださいボタンをクリックした後、空の編集テキストでアプリがクラッシュする

アプリがクラッシュするボタンが空のエディットテキスト((

でクリックした後、私はこのporblemを解決するカント(あなたの助けが必要 場合、私は、この演算子を追加しました:。。if (etText.getText().toString().trim().length()> 0) しかし、そのありませんこの問題を解決する。

私はYouTubeの

でレッスンから見て少し開発経験と、このコードを持っているあなたは私を助け場合、私は、コード

0123大量のため申し訳ありません非常に幸せになります個の
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); 
    } 
    } 
} 
+3

を貼り付け、あなたのエラーログ –

+0

エラーログをあなたのコードで –

+0

を投稿してください、私はどこにも見つけることができませんチェック! ?!? 1)if(mEmail.getText()。toString()。trim()。length()<0) 'および2)' if(mPassword.getText()。toString()。trim()。長さ()<0); – pleft

答えて

1

は、私はこれらのコード行は少し混乱していると考え、プラスあなたはおそらくスローされるNullPointerExceptionを引き起こし、(あなたが空のテキストを送信する場合)、アプリケーションをクラッシュしてしまいますので、mEmail.getText().toString()を呼び出し、でnullポインタ例外をチェックされていません。

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 
} 
+0

ありがとう、私をたくさん助けてくれてありがとう! –

0

フィールドが正しく設定されていない可能性があります。これらの両方のVARSがnullでないデバッガで

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

チェックを。それらがnullの場合は、おそらくレイアウトファイルactivity_driver_login.xmlに問題があります。たぶん、emailまたはpasswordの編集テキストはありません。

0

エラーは、あなたの場合は第二の条件で終わりにあなたが;を使用していて、条件が反対でなければならないことです。 > 0 ')( `etText.getText()のtoString()トリム()長さ:。。。このコード

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); 
    } 
} 
関連する問題