выйдите из firebase android studio - PullRequest
0 голосов
/ 28 мая 2018

код вылетает после того, как я выхожу из меню, он открывает логотип, но не работает и перестает работать сразу после

else if (id == R.id.nav_sair) {

                AlertDialog.Builder builder=new AlertDialog.Builder(RealMenuActivity.this); //Home is name of the activity
                builder.setMessage("Deseja sair?");
                builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {

                        finish();
                        Intent i=new Intent(RealMenuActivity.this, LogoActivity.class);
                        i.putExtra("finish", true);
                        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // To clean up all activities
                        //startActivity(i);
                        startActivity( i );
                        FirebaseAuth.getInstance().signOut();



                        finish();
                        return;




                    }
                });

, и это логотип, я думаю,ошибка здесь, но я не уверен

private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener firebaseAuthListener;



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


        mAuth = FirebaseAuth.getInstance();

        firebaseAuthListener = new FirebaseAuth.AuthStateListener() {



            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
                if (user != null) {

                    Intent it = new Intent( LogoActivity.this, RealMenuActivity.class );
                    startActivity( it );
                    finish();
                    return;
                }

            }
        };

        mEmail = (EditText) findViewById( R.id.Email );
        mPassword = (EditText) findViewById( R.id.Password );
        mbtnLogin = (ImageButton) findViewById( R.id.loginButton );

        mRegistro = (Button) findViewById( R.id.Registro );

        mRegistro.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent it = new Intent(LogoActivity.this, RegistroActivity.class);
                startActivity(it);
            }
        } );

        mbtnLogin.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( LogoActivity.this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (!task.isSuccessful()){
                            Toast.makeText( LogoActivity.this, "Erro ao Entrar. Tente novamente", Toast.LENGTH_SHORT ).show();
                        }

                    }
                } );
            }
        } );
    }

    @Override
    public void onClick(View v) {

    }

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

    @Override
    protected void onStop() {
        super.onStop();

        if (firebaseAuthListener != null) {
            mAuth.removeAuthStateListener(firebaseAuthListener);
            FirebaseAuth.getInstance().signOut();

        }
    }
}

Он падает сразу после открытия логотипа! Вскоре я добавлю logcat!Может ли sb помочь мне? Спасибо заранее!

Logcat

java.lang.RuntimeException: Невозможно остановить деятельность {com.example.norio.amosou / com.example.norio.amosou.RealMenuActivity}: java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid ()' для ссылки на пустой объект в android.app.ActivityThread.performDestroyActivity (ActivityThread.java): 4331) на android.app.ActivityThread.handleDestroyActivity (ActivityThread.java:4393) на android.app.ActivityThread.-wrap6 (ActivityThread.java) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1618) наandroid.os.Handler.dispatchMessage (Handler.java:110) в android.os.Looper.loop (Looper.java:203) в android.app.ActivityThread.main (ActivityThread.java:6339) в java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1084) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:945) Причиняется:java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid ()' для пустой ссылки на объект в com.example.norio.amosou.RealMenuActivity.onStop (RealMenuActivity).java: 472) на android.app.Instrumentation.callActivityOnStop (Instrumentation.java:1311) на android.app.Activity.performStop (Activity.java:6864)

1 Ответ

0 голосов
/ 28 мая 2018

причина в том, что вы выполняете 2 Finish () в своем клике

@Override
                    public void onClick(DialogInterface dialog, int id) {

                        finish();
                        Intent i=new Intent(RealMenuActivity.this, LogoActivity.class);
                        i.putExtra("finish", true);
                        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // To clean up all activities
                        //startActivity(i);
                        startActivity( i );
                        FirebaseAuth.getInstance().signOut();



                        finish();

, просто удалите первый, потому что вы убиваете свою активность, прежде чем получить доступ к своему намерению и своему выходу

@Override
                    public void onClick(DialogInterface dialog, int id) {


                        Intent i=new Intent(RealMenuActivity.this, LogoActivity.class);
                        i.putExtra("finish", true);
                        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // To clean up all activities
                        //startActivity(i);
                        startActivity( i );
                        FirebaseAuth.getInstance().signOut();



                        finish();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...