2017-07-03 48 views
0

我有几个活动:设置顺序,从他们回去

  • 闪屏
  • 登录
  • 注册
  • 仪表板

如果用户从未登录过它会像这样:

闪屏>登录>注册>仪表板

当我back从仪表板,它应该退出应用程序,通过其他活动跳过。

noHistory在登录页面不起作用,因为有时用户将从注册back

如果用户以前登录的话,应该是这样的:

闪屏>仪表板

如果用户注销,也许是为了使用另一个账户,那么就应该去:

仪表板>登录>仪表板

但是,如果用户从新的仪表板转到back,则不应该输入先前帐户的仪表板。

除此之外,我的应用程序包含多个模块,其中一些模块无法访问其他模块,因此可以在模块之间工作的解决方案将有所帮助。

我已经试过的finish()startActivityForResult()混合,并试图以检查活动从返回,但感觉很哈克,费时,而且在新的使用案例搅乱。有更好的方法吗?

+0

Intent i = new Intent(...); i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); startActivity(i); – Raj

+0

在初始屏幕和登录屏幕上添加上述行 – Raj

回答

1

你应该做这样的事情

在你飞溅的活动我有一个方法,如:

@Override 
public void loadLoginScreen() { 
    Intent intent = new Intent(this, LoginActivity.class); 
startActivity(intent); 
finish(); 
} 

然后在登录活动(我用火力点,所以我检查用户是否为空或不你可以申请你的逻辑来检查相同)

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //Get Firebase auth instance 
    if (auth.getCurrentUser() != null) { 
     startActivity(new Intent(LoginActivity.this, HomeScreenActivity.class)); 
     finish(); 
    } 
    // set the view now 
    setContentView(R.layout.activity_login); 
} 

,当我做注销我有点喜欢这个

 @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 

     case R.id.milogout: 
     FirebaseAuth.getInstance().signOut(); 
     startActivity(LoginActivity.class); 
     finish(); 
     break; 

    } 
    return true; 
    } 
+0

谢谢,但这对我不起作用,因为我的登录页面位于与仪表板不同的模块中,所以我无法使用它打开仪表板。 – Muz

1

以前的活动需要完成移动到仪表板。在启动仪表板的新活动之前拨打电话

finishAffinity(); 

此结束当前活动以及紧接其下的所有活动。

+0

谢谢,我没有意识到这个功能的存在 – Muz