FireBase // java.lang.NullPointerException

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • FireBase // java.lang.NullPointerException

    Hallo Lieber Community,
    ich bin neu hier und hoffe ich habe meine Frage im richtigen Bereich gestellt.
    Ich bin gerade dabei eine kleine Chat App zu programmieren.
    Die App funktioniert in Verbindung mit Firebase.
    Reg und Login funktionieren einwandfrei, auch meine Untermenüs machen bisher keine Probleme.
    Allerdings habe ich ein Problem mit meiner SettingsActivity.
    Bein Versuch in diese zu wechseln crasht meine App und ich erhalte folgenden Fehler :

    Quellcode

    1. AndroidRuntime: FATAL EXCEPTION: main
    2. Process: com.dojoapps.mfu, PID: 10066
    3. java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dojoapps.mfu/com.dojoapps.mfu.SettingsActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' on a null object reference
    4. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
    5. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
    6. at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    7. at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    8. at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    9. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
    10. at android.os.Handler.dispatchMessage(Handler.java:106)
    11. at android.os.Looper.loop(Looper.java:193)
    12. at android.app.ActivityThread.main(ActivityThread.java:6669)
    13. at java.lang.reflect.Method.invoke(Native Method)
    14. at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    15. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
    16. Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' on a null object reference
    17. at com.dojoapps.mfu.SettingsActivity.onCreate(SettingsActivity.java:51)
    18. at android.app.Activity.performCreate(Activity.java:7136)
    19. at android.app.Activity.performCreate(Activity.java:7127)
    20. at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
    21. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
    22. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
    23. at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    24. at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    25. at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    26. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
    27. at android.os.Handler.dispatchMessage(Handler.java:106)
    28. at android.os.Looper.loop(Looper.java:193)
    29. at android.app.ActivityThread.main(ActivityThread.java:6669)
    30. at java.lang.reflect.Method.invoke(Native Method)
    31. at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    32. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
    33. I/Process: Sending signal. PID: 10066 SIG: 9
    34. Application terminated.
    Alles anzeigen



    Hier meine SettingsActivity:



    Quellcode

    1. package com.dojoapps.mfu;
    2. import android.support.annotation.NonNull;
    3. import android.support.v7.app.AppCompatActivity;
    4. import android.os.Bundle;
    5. import android.widget.TextView;
    6. import android.widget.Toast;
    7. import com.google.firebase.auth.FirebaseAuth;
    8. import com.google.firebase.auth.FirebaseUser;
    9. import com.google.firebase.database.DataSnapshot;
    10. import com.google.firebase.database.DatabaseError;
    11. import com.google.firebase.database.DatabaseReference;
    12. import com.google.firebase.database.FirebaseDatabase;
    13. import com.google.firebase.database.ValueEventListener;
    14. import org.w3c.dom.Text;
    15. import de.hdodenhof.circleimageview.CircleImageView;
    16. public class SettingsActivity extends AppCompatActivity {
    17. private DatabaseReference mUserDatabase;
    18. private FirebaseUser mCurrentUser;
    19. private CircleImageView mDisplayImage;
    20. private TextView mName;
    21. private TextView mStatus;
    22. @Override
    23. protected void onCreate(Bundle savedInstanceState) {
    24. super.onCreate(savedInstanceState);
    25. setContentView(R.layout.activity_settings);
    26. mDisplayImage = (CircleImageView) findViewById(R.id. settings_image);
    27. mName = (TextView) findViewById(R.id. settings_display_name);
    28. mStatus = (TextView) findViewById(R.id. settings_status);
    29. mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
    30. FirebaseDatabase.getInstance().getReference();
    31. String current_uid = mCurrentUser.getUid();
    32. mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(current_uid);
    33. mUserDatabase.addValueEventListener(new ValueEventListener() {
    34. @Override
    35. public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    36. String name = dataSnapshot.child("name").getValue().toString();
    37. String image = dataSnapshot.child("image").getValue().toString();
    38. String status = dataSnapshot.child("status").getValue().toString();
    39. String thumb_image = dataSnapshot.child("thumb image").getValue().toString();
    40. mName.setText(name);
    41. mStatus.setText(status);
    42. }
    43. @Override
    44. public void onCancelled(DatabaseError databaseError) {
    45. }
    46. });
    47. }
    48. }
    Alles anzeigen

    Und hier meine FireBase Datenbank Struktur :


    Quellcode

    1. mfumessageforyou
    2. Users
    3. 0f1swOIAXGZyq8KwKnKOPHdZu6K2
    4. image: "default"
    5. name: "445566988"
    6. status: "Hi there, I'm using MFU Chat App."
    7. thumb_image: "default"

    Der Fehler liegt wohl ( so vermute ich ) daran, dass die UID von firebase nicht gelesen werden kann -> NullException. Allerdings blieben bisher alle Versuche den Fehler zu fixen erfolglos und ich stehe wirklich vor einem Rätsel.

    Ich würde mich riesig freuen, wenn sich jemand diesem Problem annehmen und mir etwas auf die Sprünge helfen könnte :)

    Liebe Grüße
    Ebi
  • Hallo auch ich bin voll der Meinung das zum Zeitpunkt gar kein User eingelogt ist.
    Frage wo erstellst und logst du denn überhaupt einen User ein?
    Ist der User überhaupt in der firerbase console vorhanden?

    Normalerweise benutzt man zu Login einen listner.
    Der den User mit Email und Passwort einlogt.

    Schaue dir das mal an
    firebase.google.com/docs/auth/android/password-auth

    Ohne einen listner und vorherigen Registrierung der E-Mail und Passwort von den User wirst kein Erfolg haben.

    Auch musst du in der Konsole die Authentifizierung für Email u Passwort aktivieren. Hoffe das du das überhaupt hast.
    Ein Feedback auf Tipps ist auch schön. :P
  • Hallo zusammen,
    vorab schon einmal vielen Dank für eure Antworten.
    Meiner Meinung nach funktioniert mein Reg und LogIn ... hier mal meine anderen Files, vielleicht hat sich doch ein Fehler eingeschlichen?
    Ich bin wirklich am verzweifeln :D

    Main Activity:

    Quellcode

    1. package com.dojoapps.mfu;
    2. import android.content.Intent;
    3. import android.support.design.widget.TabLayout;
    4. import android.support.v4.view.ViewPager;
    5. import android.support.v7.app.AppCompatActivity;
    6. import android.os.Bundle;
    7. import android.view.Menu;
    8. import android.view.MenuItem;
    9. import android.widget.Toolbar;
    10. import com.google.firebase.auth.FirebaseAuth;
    11. import com.google.firebase.auth.FirebaseUser;
    12. public class MainActivity extends AppCompatActivity {
    13. private FirebaseAuth mAuth;
    14. private android.support.v7.widget.Toolbar mToolbar;
    15. private ViewPager mViewPager;
    16. private SectionsPagerAdapter mSectionsPagerAdapter;
    17. private TabLayout mTabLayout;
    18. @Override
    19. protected void onCreate(Bundle savedInstanceState) {
    20. super.onCreate(savedInstanceState);
    21. setContentView(R.layout.activity_main);
    22. mAuth = FirebaseAuth.getInstance();
    23. mToolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.main_page_toolbar);
    24. setSupportActionBar(mToolbar);
    25. getSupportActionBar().setTitle("MFU");
    26. mViewPager = (ViewPager) findViewById(R.id. main_tabPager);
    27. mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
    28. mViewPager.setAdapter(mSectionsPagerAdapter);
    29. mTabLayout = findViewById(R.id. main_tabs);
    30. mTabLayout.setupWithViewPager(mViewPager);
    31. }
    32. @Override
    33. public void onStart() {
    34. super.onStart();
    35. // Check if user is signed in (non-null) and update UI accordingly.
    36. FirebaseUser currentUser = mAuth.getCurrentUser();
    37. if(currentUser == null)
    38. {
    39. sendToStart();
    40. }
    41. }
    42. private void sendToStart() {
    43. Intent startIntent = new Intent(MainActivity.this, StartActivity.class);
    44. startActivity(startIntent);
    45. finish();
    46. }
    47. @Override
    48. public boolean onCreateOptionsMenu(Menu menu) {
    49. super.onCreateOptionsMenu(menu);
    50. getMenuInflater().inflate(R.menu.main_menu, menu);
    51. return true;
    52. }
    53. @Override
    54. public boolean onOptionsItemSelected(MenuItem item) {
    55. super.onOptionsItemSelected(item);
    56. if (item.getItemId() == R.id.main_logout_btn);{
    57. FirebaseAuth.getInstance().signOut();
    58. sendToStart();
    59. }
    60. if (item.getItemId() == R.id. main_settings_btn){
    61. Intent settingsIntent = new Intent(MainActivity.this, SettingsActivity.class);
    62. startActivity(settingsIntent);
    63. }
    64. return true;
    65. }
    66. }
    Alles anzeigen
    Start Activity :

    Quellcode

    1. package com.dojoapps.mfu;
    2. import android.content.Intent;
    3. import android.support.v7.app.AppCompatActivity;
    4. import android.os.Bundle;
    5. import android.view.View;
    6. import android.widget.Button;
    7. public class StartActivity extends AppCompatActivity {
    8. private Button mRegBtn;
    9. private Button mLoginBtn;
    10. @Override
    11. protected void onCreate(Bundle savedInstanceState) {
    12. super.onCreate(savedInstanceState);
    13. setContentView(R.layout.activity_start);
    14. mRegBtn = (Button) findViewById(R.id.start_reg_btn);
    15. mLoginBtn = (Button) findViewById(R.id.start_login_btn);
    16. mLoginBtn.setOnClickListener(new View.OnClickListener() {
    17. @Override
    18. public void onClick(View v) {
    19. Intent log_intent = new Intent(StartActivity.this, LoginActivity.class);
    20. startActivity(log_intent);
    21. }
    22. });
    23. mRegBtn.setOnClickListener(new View.OnClickListener() {
    24. @Override
    25. public void onClick(View v) {
    26. Intent reg_intent = new Intent(StartActivity.this, RegisterActivity.class);
    27. startActivity(reg_intent);
    28. }
    29. });
    30. }
    31. }
    Alles anzeigen

    Register Activty :

    Java-Quellcode

    1. package com.dojoapps.mfu;
    2. import android.app.ProgressDialog;
    3. import android.content.Intent;
    4. import android.support.annotation.NonNull;
    5. import android.support.design.widget.TextInputLayout;
    6. import android.support.v7.app.AppCompatActivity;
    7. import android.os.Bundle;
    8. import android.support.v7.widget.Toolbar;
    9. import android.text.TextUtils;
    10. import android.view.View;
    11. import android.widget.Button;
    12. import android.widget.Toast;
    13. import com.google.android.gms.tasks.OnCompleteListener;
    14. import com.google.android.gms.tasks.Task;
    15. import com.google.firebase.auth.AuthResult;
    16. import com.google.firebase.auth.FirebaseAuth;
    17. import com.google.firebase.auth.FirebaseUser;
    18. import com.google.firebase.database.DatabaseReference;
    19. import com.google.firebase.database.FirebaseDatabase;
    20. import java.util.HashMap;
    21. public class RegisterActivity extends AppCompatActivity {
    22. private TextInputLayout mDisplayName;
    23. private TextInputLayout mEmail;
    24. private TextInputLayout mPassword;
    25. private Button mCreateButton;
    26. private Toolbar mToolbar;
    27. private ProgressDialog mRegProgress;
    28. private DatabaseReference mDatabase;
    29. // Firebase Auth
    30. private FirebaseAuth mAuth;
    31. @Override
    32. protected void onCreate(Bundle savedInstanceState) {
    33. super.onCreate(savedInstanceState);
    34. setContentView(R.layout.activity_register);
    35. mToolbar = (Toolbar) findViewById(R.id.register_toolbar);
    36. setSupportActionBar(mToolbar);
    37. getSupportActionBar().setTitle("Create Account");
    38. getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    39. mRegProgress = new ProgressDialog(this );
    40. // Firebase Auth
    41. mAuth = FirebaseAuth.getInstance();
    42. // Android Fields
    43. mDisplayName = (TextInputLayout) findViewById(R.id.reg_display_name);
    44. mEmail = (TextInputLayout) findViewById(R.id.reg_email);
    45. mPassword = (TextInputLayout) findViewById(R.id.reg_password);
    46. mCreateButton = (Button) findViewById(R.id.reg_create_btn);
    47. mCreateButton.setOnClickListener(new View.OnClickListener() {
    48. @Override
    49. public void onClick(View v) {
    50. String display_name = mDisplayName.getEditText().getText().toString();
    51. String email = mEmail.getEditText().getText().toString();
    52. String password = mPassword.getEditText().getText().toString();
    53. if (TextUtils.isEmpty(display_name) || TextUtils.isEmpty(email) || TextUtils.isEmpty(password)){
    54. Toast.makeText(RegisterActivity.this, "Please fill in all information", Toast.LENGTH_LONG).show();
    55. } else {
    56. mRegProgress.setTitle("Creating your Account");
    57. mRegProgress.setMessage("Please wait a second ...");
    58. mRegProgress.setCanceledOnTouchOutside(false);
    59. mRegProgress.show();
    60. register_user(display_name, email, password);
    61. }
    62. }
    63. });
    64. }
    65. private void register_user(final String display_name, final String email, String password) {
    66. mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
    67. @Override
    68. public void onComplete(@NonNull Task<AuthResult> task) {
    69. if(task.isSuccessful()){
    70. mAuth.getCurrentUser().sendEmailVerification()
    71. .addOnCompleteListener(new OnCompleteListener<Void>() {
    72. @Override
    73. public void onComplete(@NonNull Task<Void> task) {
    74. if (task.isSuccessful()) {
    75. Toast.makeText(RegisterActivity.this, "Verification Mail sent", Toast.LENGTH_LONG).show();
    76. }else {
    77. Toast.makeText(RegisterActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
    78. }
    79. }
    80. });
    81. FirebaseUser current_user = FirebaseAuth.getInstance().getCurrentUser();
    82. String uid = current_user.getUid();
    83. mDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(uid);
    84. HashMap<String, String> userMap = new HashMap<>();
    85. userMap.put("name", display_name);
    86. userMap.put("status", "Hi there, I'm using MFU Chat App.");
    87. userMap.put("image","default");
    88. userMap.put("thumb_image", "default");
    89. mDatabase.setValue(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
    90. @Override
    91. public void onComplete(@NonNull Task<Void> task) {
    92. if(task.isSuccessful()){
    93. mRegProgress.dismiss();
    94. Intent mainIntent = new Intent(RegisterActivity.this, MainActivity.class);
    95. mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    96. startActivity(mainIntent);
    97. finish();
    98. }
    99. }
    100. });
    101. } else {
    102. mRegProgress.hide();
    103. Toast.makeText(RegisterActivity.this, "Cannot Create Account", Toast.LENGTH_LONG).show();
    104. }
    105. }
    106. });
    107. }
    108. }
    Alles anzeigen
  • sorry für Doppelpost aber die LogIn hat nicht mehr in den vorherigen Post gepasst:

    LogIn Acitivty:

    Quellcode

    1. package com.dojoapps.mfu;
    2. import android.app.ProgressDialog;
    3. import android.content.Intent;
    4. import android.support.annotation.NonNull;
    5. import android.support.design.widget.TextInputLayout;
    6. import android.support.v7.app.AppCompatActivity;
    7. import android.os.Bundle;
    8. import android.support.v7.widget.Toolbar;
    9. import android.support.v7.widget.ToolbarWidgetWrapper;
    10. import android.text.TextUtils;
    11. import android.view.View;
    12. import android.widget.Button;
    13. import android.widget.Toast;
    14. import com.google.android.gms.tasks.OnCompleteListener;
    15. import com.google.android.gms.tasks.Task;
    16. import com.google.firebase.auth.AuthResult;
    17. import com.google.firebase.auth.FirebaseAuth;
    18. public class LoginActivity extends AppCompatActivity {
    19. private Toolbar mToolbar;
    20. private TextInputLayout mLoginEmail;
    21. private TextInputLayout mLoginPassword;
    22. private FirebaseAuth mAuth;
    23. private Button mLogin_btn;
    24. private ProgressDialog mLoginProgress;
    25. @Override
    26. protected void onCreate(Bundle savedInstanceState) {
    27. super.onCreate(savedInstanceState);
    28. setContentView(R.layout.activity_login);
    29. mToolbar = (Toolbar) findViewById(R.id.login_toolbar);
    30. setSupportActionBar(mToolbar);
    31. getSupportActionBar().setTitle("LogIn");
    32. getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    33. mAuth = FirebaseAuth.getInstance();
    34. mLoginProgress = new ProgressDialog(this);
    35. mLoginEmail = (TextInputLayout) findViewById(R.id.login_email);
    36. mLoginPassword = (TextInputLayout) findViewById(R.id.login_password);
    37. mLogin_btn = (Button) findViewById(R.id.login_btn);
    38. mLogin_btn.setOnClickListener(new View.OnClickListener() {
    39. @Override
    40. public void onClick(View v) {
    41. String email = mLoginEmail.getEditText().getText().toString();
    42. String password = mLoginPassword.getEditText().getText().toString();
    43. if(!TextUtils.isEmpty(email) || !TextUtils.isEmpty(password)){
    44. mLoginProgress.setTitle("Logging in");
    45. mLoginProgress.setMessage("Please wait a second ...");
    46. mLoginProgress.setCanceledOnTouchOutside(false);
    47. mLoginProgress.show();
    48. loginUser(email, password);
    49. }
    50. }
    51. });
    52. }
    53. private void loginUser(String email, String password) {
    54. mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
    55. @Override
    56. public void onComplete(@NonNull Task<AuthResult> task) {
    57. if (task.isSuccessful()){
    58. mLoginProgress.dismiss();
    59. Intent mainIntent = new Intent(LoginActivity.this, MainActivity.class);
    60. mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    61. startActivity(mainIntent);
    62. finish();
    63. } else {
    64. mLoginProgress.hide();
    65. Toast.makeText(LoginActivity.this, "Cannot Sign In", Toast.LENGTH_LONG).show();
    66. }
    67. }
    68. });
    69. }
    70. }
    Alles anzeigen

    Die Email+PW Auth ist natürlich auch bei Firebase aktiviert ( ich denke auch richtig, sonst würde die Reg + der LogIn ja nicht funktionieren oder? )


    vorab schonmal wieder vielen Dank für eure Antworten:)

    Liebe Grüße
    Ebi
  • Hallo

    Also ich gehe mal davon aus das deine Registrierung korrekt abläuft.

    Und beim Login etwas schief geht.

    Wird den überhaupt der listner „onComplete“ aufgerufen?


    Normalerweise macht man bei so etwasen auch einen AuthStateListener() der in der onCrate erstellt und in der onStart gestartet und in der onstop beendet wird. Der überprüft ob ein User eingeloggt ist. Das kann ich bei dir weder in der login Activity noch in MainActivity erkennen.Denn nirgend wo wird geprüft ob jemand eingeloggt ist und wenn ja wird auch nicht ausgeloggt.Dafür ist der AuthStateListener() da.

    Quellcode

    1. public class LoginEmailActivity extends AppCompatActivity {
    2. EditText passwortfeld;
    3. EditText emailfeld;
    4. FirebaseAuth.AuthStateListener mAuthListener;
    5. FirebaseAuth mAuth;
    6. @Override
    7. protected void onCreate(Bundle savedInstanceState) {
    8. super.onCreate(savedInstanceState);
    9. setContentView(R.layout.activity_login_email);
    10. passwortfeld = (EditText) findViewById(R.id.editPass);
    11. emailfeld = (EditText) findViewById(R.id.editEmail);
    12. mAuth = FirebaseAuth.getInstance();
    13. mAuthListener = new FirebaseAuth.AuthStateListener() {
    14. @Override
    15. public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
    16. FirebaseUser user = firebaseAuth.getCurrentUser();
    17. if (user != null) {
    18. Intent i = new Intent(getApplicationContext(), MainActivity.class);
    19. startActivity(i);
    20. }
    21. }
    22. };
    23. }
    24. @Override
    25. public void onStart() {
    26. super.onStart();
    27. mAuth.addAuthStateListener(mAuthListener);
    28. }
    29. @Override
    30. public void onStop() {
    31. super.onStop();
    32. if (mAuthListener != null) {
    33. mAuth.removeAuthStateListener(mAuthListener);
    34. }
    35. }
    36. public void loginButton(View v){
    37. String email = emailfeld.getText().toString();
    38. String pass = passwortfeld.getText().toString();
    39. if(!email.isEmpty() || !pass.isEmpty()) {
    40. mAuth.signInWithEmailAndPassword(email, pass)
    41. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
    42. @Override
    43. public void onComplete(@NonNull Task<AuthResult> task) {
    44. if (task.isSuccessful()) {
    45. Intent i = new Intent(getApplicationContext(), MainActivity.class);
    46. startActivity(i);
    47. } else {
    48. Toast.makeText(getApplicationContext(), "login Error", Toast.LENGTH_LONG).show();
    49. Log.i("login", "taskt " + task.getException());
    50. }
    51. }
    52. });
    53. }
    54. }
    55. }
    Alles anzeigen
    Ein Feedback auf Tipps ist auch schön. :P
  • Hallo,
    vielen Dank für die Antwort :)
    ich habe meine LogIn nun wie folgt ergänzt:

    Quellcode

    1. package com.dojoapps.mfu;
    2. import android.app.ProgressDialog;
    3. import android.content.Intent;
    4. import android.preference.EditTextPreference;
    5. import android.support.annotation.NonNull;
    6. import android.support.design.widget.TextInputLayout;
    7. import android.support.v7.app.AppCompatActivity;
    8. import android.os.Bundle;
    9. import android.support.v7.widget.Toolbar;
    10. import android.support.v7.widget.ToolbarWidgetWrapper;
    11. import android.text.TextUtils;
    12. import android.util.Log;
    13. import android.view.View;
    14. import android.widget.Button;
    15. import android.widget.EditText;
    16. import android.widget.Toast;
    17. import com.google.android.gms.tasks.OnCompleteListener;
    18. import com.google.android.gms.tasks.Task;
    19. import com.google.firebase.auth.AuthResult;
    20. import com.google.firebase.auth.FirebaseAuth;
    21. import com.google.firebase.auth.FirebaseUser;
    22. public class LoginActivity extends AppCompatActivity {
    23. EditText passwortfeld;
    24. EditText emailfeld;
    25. private Button mLogin_btn;
    26. private Toolbar mToolbar;
    27. private ProgressDialog mLoginProgress;
    28. FirebaseAuth.AuthStateListener mAuthListener;
    29. FirebaseAuth mAuth;
    30. private EditTextPreference mLoginEmail;
    31. @Override
    32. protected void onCreate(Bundle savedInstanceState) {
    33. super.onCreate(savedInstanceState);
    34. setContentView(R.layout.activity_login);
    35. mLoginProgress = new ProgressDialog(this);
    36. mToolbar = (Toolbar) findViewById(R.id.login_toolbar);
    37. setSupportActionBar(mToolbar);
    38. getSupportActionBar().setTitle("LogIn");
    39. getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    40. passwortfeld = (EditText) findViewById(R.id.login_password);
    41. emailfeld = (EditText) findViewById(R.id.login_email);
    42. mLogin_btn = (Button) findViewById(R.id.login_btn);
    43. mAuth = FirebaseAuth.getInstance();
    44. mLogin_btn.setOnClickListener(new View.OnClickListener() {
    45. @Override
    46. public void onClick(View v) {
    47. String email = emailfeld.getText().toString();
    48. String password = passwortfeld.getText().toString();
    49. if(!TextUtils.isEmpty(email) || !TextUtils.isEmpty(password)){
    50. mLoginProgress.setTitle("Logging in");
    51. mLoginProgress.setMessage("Please wait a second ...");
    52. mLoginProgress.setCanceledOnTouchOutside(false);
    53. mLoginProgress.show();
    54. loginButton(email, password);
    55. }
    56. }
    57. });
    58. mAuthListener = new FirebaseAuth.AuthStateListener() {
    59. @Override
    60. public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
    61. FirebaseUser user = firebaseAuth.getCurrentUser();
    62. if (user != null) {
    63. Intent i = new Intent(getApplicationContext(), MainActivity.class);
    64. startActivity(i);
    65. }
    66. }
    67. };
    68. }
    69. public void loginButton(String v, String password){
    70. String email = emailfeld.getText().toString();
    71. String pass = passwortfeld.getText().toString();
    72. if(!email.isEmpty() || !pass.isEmpty()) {
    73. mAuth.signInWithEmailAndPassword(email, pass)
    74. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
    75. @Override
    76. public void onComplete(@NonNull Task<AuthResult> task) {
    77. if (task.isSuccessful()) {
    78. Intent i = new Intent(getApplicationContext(), MainActivity.class);
    79. startActivity(i);
    80. } else {
    81. Toast.makeText(getApplicationContext(), "login Error", Toast.LENGTH_LONG).show();
    82. Log.i("login", "taskt " + task.getException());
    83. }
    84. }
    85. });
    86. }
    87. }
    88. @Override
    89. public void onStart() {
    90. super.onStart();
    91. mAuth.addAuthStateListener(mAuthListener);
    92. }
    93. @Override
    94. public void onStop() {
    95. super.onStop();
    96. if (mAuthListener != null) {
    97. mAuth.removeAuthStateListener(mAuthListener);
    98. }
    99. }
    100. }
    Alles anzeigen
    bekomme aber leider immer noch den selben Fehler :(
    Hab ich noch etwas falsch gemacht?
    Vielen Dank im Voraus :)
    LG
    Ebi
  • eigentlich müsste es gehen.
    Frage welche Parameter variablen überträgst du an die Methode loginBoutton die beiten Variablen werden in der Methodegar nicht benutzt. Sondern edittext variablen. Ist denn auch der User und das Passwort was du an den listner übergibt auch in der firabase vorhanden.

    Es kann auch sein das du als ein anderer user eingelogt bist. Mache mal vorher ein layout. Es kann auch sein da deine firebase etwas durcheinander ist.

    Wie ist das hast du den listner auch in deiner minactivity?
    Ein Feedback auf Tipps ist auch schön. :P