2017-12-27 32 views
0

Ich habe bereits darüber nachgelesen, wie man nach einem Login eine neue Aktivität startet, aber meine App stürzt immer ab, wenn ich versuche, eine neue Aktivität zu implementieren.Starting MainActivity nach Firebase-Authentifizierung

Ich habe meine Launcher-Klasse Anmeldung Aktivität Aufforderung zur Authentifizierung über Benutzername-Pw/Facebook/Google.

Im Moment versuche ich, die neue Aktivität in der onActivityResult-Methode zu starten, stürzt jedoch ab. Ich habe verschiedene Möglichkeiten versucht, es zu starten, aber jetzt bin ich verloren.

Ich habe es geschafft, ein neues Fragment zu starten, nachdem ich auf die Schaltfläche geklickt habe oder eine neue Aktivität gestartet habe, aber die Anmeldung bereitet mir Probleme.

Danke für Ihre Hilfe - sehr geschätzt!

public class LoginActivity extends AppCompatActivity implements View.OnClickListener{ 
    private static final int RC_SIGN_IN = 0; 
    private FirebaseAuth firebaseAuth = FirebaseAuth.getInstance(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 

     //everything for firebase 
     firebaseAuth = FirebaseAuth.getInstance(); 
     if (firebaseAuth.getCurrentUser() != null) { 
      //user already signed in 
      Log.d("AUTH", firebaseAuth.getCurrentUser().getEmail()); 

     } else { 
      startActivityForResult(AuthUI.getInstance() 
          .createSignInIntentBuilder() 
          .setAvailableProviders(
            Arrays.asList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(), 
              new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build(), 
              new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build())) 
          .build(), 
        RC_SIGN_IN); 
     } 
     findViewById(R.id.log_out_button).setOnClickListener(this); 
    } 


    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == RC_SIGN_IN) { 
      if (resultCode == RESULT_OK) { 
       //user logged in 
       Log.d("AUTH", firebaseAuth.getCurrentUser().getEmail()); 

       Uri contentUri = data.getData(); 
       startActivity(new Intent(this, MainActivity.class) 
         .setData(contentUri)); 

       // Intent myIntent = new Intent(LoginActivity.this, MainActivity.class); 
       // LoginActivity.this.startActivity(myIntent); 

       /* TEST: START RANDOM FRAGMENT FROM THE ACTIVITY 
       android.support.v4.app.FragmentManager fragmentManager = LoginActivity.this.getSupportFragmentManager(); 
       android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
       TrainingFragment trainingFragment = new TrainingFragment(); 
       fragmentTransaction.add(R.id.fragment_container, trainingFragment); 
       fragmentTransaction.commit();*/ 

      } 
      else { 
       //user not authenticated 
       Log.d("AUTH", "NOT AUTHENTICATED"); 
      } 
     } 
    } 


    @Override 
    public void onClick(View v) { 
     if (v.getId() == R.id.log_out_button) { 
      AuthUI.getInstance() 
        .signOut(this) 
        .addOnCompleteListener(new OnCompleteListener<Void>() { 
         @Override 
         public void onComplete(@NonNull Task<Void> task) { 
           Log.d("AUTH", "USER LOGGED OUT!"); 
          //Fragment newFragment = new HomeFragment(); try to start new activity? 
          //switch to another fragment saying bye or some back next time or sth and then add a button with a "close app" function 
          /* android.support.v4.app.FragmentManager fragmentManager = LoginActivity.this.getSupportFragmentManager(); 
          android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
          TrainingFragment trainingFragment = new TrainingFragment(); 
          fragmentTransaction.add(R.id.fragment_container, trainingFragment); 
          fragmentTransaction.commit(); */ 
          finish(); //finish ends not only the activity, but the application, without it, the switch from activity to fragment functions :) 


         } 
        }); 
     } 
    } 
} 

FEHLERPROTOKOLL

D/Android Runtime: Ausschalten VM E/Android Runtime: fatal EXCEPTION: main Prozess: com.example.vreeni.firebaseauthentiction, PID: 28367 java.lang.RuntimeException: Aktivität kann nicht gestartet werden ComponentInfo {com.beispiel.vreeni.firebaseauthentication/com.beispiel.vreeni.firebaseauthentication.MainActivity}: java.lang.IllegalStateException: Diese Aktivität verfügt bereits über eine Aktionsleiste, die vom Fensterdekor bereitgestellt wird. Fordern Sie Window.FEATURE_SUPPORT_ACTION_BAR nicht an, und legen Sie windowActionBar in Ihrem Design auf false fest, um stattdessen eine Toolbar zu verwenden. bei android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2822) bei android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2897) bei android.app.ActivityThread.-wrap11 (Unknown Source: 0) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1598) bei android.os.Handler.dispatchMessage (Handler.java:105) bei android.os.Looper.loop (Looper.java:251) bei android.app.ActivityThread.main (ActivityThread.java:6563) bei java.lang.reflect.Method.invoke (native Methode) bei com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:240) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767) verursacht durch: java.lang.IllegalStateException: Diese Aktivität verfügt bereits über eine Aktionsleiste, die vom Fensterdekor bereitgestellt wird. Fordern Sie Window.FEATURE_SUPPORT_ACTION_BAR nicht an, und legen Sie windowActionBar in Ihrem Design auf false fest, um stattdessen eine Toolbar zu verwenden. bei android.support.v7.app.AppCompatDelegateImplV9.setSupportActionBar (AppCompatDelegateImplV9.java:201) bei android.support.v7.app.AppCompatActivity.setSupportActionBar (AppCompatActivity.java:129) bei com.example.vreeni.firebaseauthentication. MainActivity.onCreate (MainActivity.java:26) bei android.app.Activity.performCreate (Activity.java:6975) bei android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1214) bei android.app.ActivityThread. performLaunchActivity (ActivityThread.java:2775) bei android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2897) bei android.app.ActivityThread.-wrap11 (Unbekannte Quelle: 0) at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1598) bei android.os.Handler.dispatchMessage (Handler.java:105) bei android.os.Looper.loop (Looper.java:251) bei android.app.ActivityThread. main (ActivityThread.java:6563) bei java.lang.reflect.Method.invoke (native Methode) bei com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zygote.java:240) bei com.android .internal.os.ZygoteInit.main (ZygoteInit.java:767)

+1

Fehlerprotokoll bitte .. –

+0

Was ist der Fehler? –

+0

Fehlerprotokoll hinzugefügt – Vee

Antwort

0

In Ordnung, anscheinend wurde es durcheinander gebracht, da ich anfänglich 2 getrennte Projekte hatte, die ich zusammenführte. Die Themen in der Stildatei für die erste Aktivität und die folgenden enthielten unterschiedliche Informationen zur actionBar. Außerdem hatte ich die zweite Aktivität im Manifest nicht initialisiert. Ich habe gerade zu lange auf den Code gestarrt, um das nicht zu bemerken. Frage gelöst :)

Verwandte Themen