2016-03-21 41 views
2

我的主要/启动活动是我SignInActivity,我已经包括了 火力地堡AUTH听众如何返回登录活动Firebase authlistener?

mFirebase.addAuthStateListener(new Firebase.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(AuthData authData) { 
      if (authData != null) { 
       // go to auth activity 
       // such as user logging in 
      } else { 
       if(!(this instanceof SignInActivity)){ 
        // if i sign out in an auth activity 
        // i want to trigger this to go back to the SignIn Activity 
        Intent mIntent = new Intent(getApplicationContext(), SignInActivity.class); 
        mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(mIntent); 
        finish(); 
        return; 
       } 
      } 
     } 
    }); 

else语句,如果条件不工作。我知道我不能在嵌套对象中使用this。我尝试了一些其他的尝试,但我总是闪烁,我认为它结束了无限循环,因为条件总是满足。什么是正确的方式去做这件事?

回答

0

试试这个:

mFirebase.addAuthStateListener(new Firebase.AuthStateListener() { 
    @Override 
    public void onAuthStateChanged(AuthData authData) { 
     if (authData != null) { 
      // go to auth activity 
      // such as user logging in 
     } else { 
      if(!(SignInActivity.this instanceof SignInActivity)){ 
       // if i sign out in an auth activity 
       // i want to trigger this to go back to the SignIn Activity 
       Intent mIntent = new Intent(getApplicationContext(), SignInActivity.class); 
       mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(mIntent); 
       finish(); 
       return; 
      } 
     } 
    } 
}); 

Is it safe to use MainActivity.this

+0

那会导致mActivity永远是SignInActivity的实例,因为其在SignInActivity声明? – user2439604

+0

如果这里的想法只是在用户重新打开应用程序时检查用户是否登录,则不需要其他语句。如果用户未登录,则可以不做任何事情。 – TheOriginalAlex

+0

这就是其中一个原因。如果用户在另一个活动中并且用户注销,我希望这会触发。当注销按钮/链接被点击,然后生病unAuth用户,我希望这捕获了这种情况,并重定向到SignInActivity – user2439604