RegisterActivity

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

  • RegisterActivity

    Moin Moin ich schreibe gerade ein Login und eine Registrierung leider habe ich wen ich die Methode .getUid() nutze einen Nullpointer der es mir nicht möglich macht einen Button mit Male or Female funktionstüchtig einzufügen.

    Java-Quellcode: RegisterActivity

    1. public class RegisterActivity extends AppCompatActivity {
    2. private Button regi_btn;
    3. private EditText umail, upass,upass_conf, uFirstname, uName, uDate, uPhone;
    4. private ProgressDialog loading;
    5. private RadioGroup uRadioGroup;
    6. private FirebaseAuth mAuth;
    7. private FirebaseAuth.AuthStateListener mAuthStateListener;
    8. @Override
    9. protected void onCreate(Bundle savedInstanceState) {
    10. super.onCreate(savedInstanceState);
    11. setContentView(R.layout.activity_register);
    12. regi_btn = findViewById(R.id.btn_reg);
    13. umail = findViewById(R.id.email);
    14. upass = findViewById(R.id.pass);
    15. uName = findViewById(R.id.uname);
    16. uRadioGroup = findViewById(R.id.radioGroup);
    17. mAuth = FirebaseAuth.getInstance();
    18. mAuthStateListener = new FirebaseAuth.AuthStateListener() {
    19. @Override
    20. public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
    21. final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    22. if(user != null){
    23. Intent intent4 = new Intent(RegisterActivity.this,MainActivity.class);
    24. startActivity(intent4);
    25. finish();
    26. return;
    27. }
    28. }
    29. };
    30. regi_btn.setOnClickListener(new View.OnClickListener() {
    31. @Override
    32. public void onClick(View view) {
    33. final String name = uName.getText().toString();
    34. final String email = umail.getText().toString();
    35. final String pass = upass.getText().toString();
    36. int selectID = uRadioGroup.getCheckedRadioButtonId();
    37. final RadioButton radioButton = findViewById(selectID);
    38. if(radioButton.getText() == null){
    39. return;
    40. }
    41. mAuth.createUserWithEmailAndPassword(email, pass).addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() {
    42. @Override
    43. public void onComplete(@NonNull Task<AuthResult> task) {
    44. if(!task.isSuccessful()){
    45. Toast.makeText(RegisterActivity.this, "sign_up_error" , Toast.LENGTH_SHORT).show();
    46. }else{
    47. try {
    48. String userID = mAuth.getCurrentUser().getUid();
    49. DatabaseReference currentUserDb = FirebaseDatabase.getInstance().getReference().child("Users").child(radioButton.getText().toString())
    50. .child(userID).child("name");
    51. currentUserDb.setValue(name);
    52. }catch(NullPointerException e){
    53. e.printStackTrace();
    54. }
    55. }
    56. }
    57. });
    58. }
    59. });
    60. }
    61. @Override
    62. protected void onStart() {
    63. super.onStart();
    64. mAuth.addAuthStateListener(mAuthStateListener);
    65. }
    66. @Override
    67. protected void onStop() {
    68. super.onStop();
    69. mAuth.removeAuthStateListener(mAuthStateListener);
    70. }
    71. }
    Alles anzeigen
  • hallo also das mit dem getuid in dem klicklistner kann nicht gehen.
    Gehört dort auch nicht hin.
    Zu diesem Zeitpunkt willst du dich ja erst registrieren. Bist ja noch gar nicht angemeldet.

    Wenn dann kannst du den aktuellen User in dem AuthState listner bekommen.
    Dafür hast du den ja auch erstellt.
    Ein Feedback auf Tipps ist auch schön. :P
  • Java-Quellcode: AuthStateListener

    1. mAuthStateListener = new FirebaseAuth.AuthStateListener() {
    2. @Override
    3. public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
    4. final String name = uName.getText().toString();
    5. int selectID = uRadioGroup.getCheckedRadioButtonId();
    6. final RadioButton radioButton = findViewById(selectID);
    7. final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    8. if(user != null){
    9. Intent intent4 = new Intent(RegisterActivity.this,MainActivity.class);
    10. startActivity(intent4);
    11. finish();
    12. return;
    13. }else{
    14. try {
    15. String userID = mAuth.getCurrentUser().getUid();
    16. DatabaseReference currentUserDb = FirebaseDatabase.getInstance().getReference().child("Users").child(radioButton.getText().toString())
    17. .child(userID).child("name");
    18. currentUserDb.setValue(name);
    19. }catch (NullPointerException e){
    20. e.printStackTrace();
    21. }
    22. }
    Alles anzeigen


    So meintest du es oder? Nur ich denke die if else muss umgeschrieben werden dafür oder?
  • Hallo

    Nur ich denke die if else muss umgeschrieben werden dafür oder?
    Ob die umgeschrieben werden muss keine Ahnung.
    Erstens wird den der Aktuelle User auch zurückgegeben?
    Bei dem Speichern in der DB bin ich mir nicht so sicher ob das Ok ist. Kann da wenig sagen da ich deine Struktur deiner DB nicht kenne.
    Ein Feedback auf Tipps ist auch schön. :P
  • Neu

    Ich gebs auf ich schreibs nomma komplett von neu wen ich Zeit dafür habe. Trz danke für deine Hilfe. Hatte spaßes halber etwas anderes angefangen um sachen zu testen habe dort dann die regi eingebaut und tadaaa es funktioniert dort. Aber hier nicht ich weiß nicht was ich falsch gemacht habe und finde den dummen fehler auch nicht -.-