如何在从堆栈中丢弃登录屏幕时在活动之间向前导航?

时间:2016-04-21 09:19:28

标签: android android-activity activity-stack

我有一个应用程序,如果我在某个屏幕上,并且用户试图访问需要身份验证的应用程序的特定部分,它会在继续之前进入登录屏幕。

该应用程序当前所做的是,比如我在屏幕3上,但想要进入屏幕4,但我需要先登录才能进入屏幕4.登录界面显示,登录后,用户是重定向到屏幕1必须返回步骤以返回他们所在的屏幕。

我想要的是,当用户点击按钮进入屏幕4时,会显示登录屏幕,一旦登录,用户就会被发送到屏幕4,然后返回到屏幕3然后点击按钮试。

我试过的是调用finish();一旦用户成功登录,但所有操作都将用户返回到屏幕3,使他们必须单击按钮才能转到屏幕4,这当然现在允许他们登录。

有什么想法我可以在我的应用中实现这个吗?

由于

编辑:标题可能会产生误导,我想不出更好的方式来改写标题。如果可以请继续请求编辑

4 个答案:

答案 0 :(得分:5)

首先声明

int SIGN_IN_REQUEST = 42;

当用户想要进入屏幕4时:

if (isSignedIn) {
  intent = new Intent(this, Screen4Activity.class);
  startActivity(intent);
} else {
  intent = new Intent(this, SignInActivity.class);
  startActivityForResult(intent, SIGN_IN_REQUEST);
}

最后,有一个

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == SIGN_IN_REQUEST) {
      if (resultCode == Activity.RESULT_OK) {
        //User signed in, launch Screen4
        intent = new Intent(this, Screen4Activity.class);
        startActivity(intent);
      } else {
        //User cancelled the sign in, deal accordingly
      }
    }
}

如果用户已登录,则从您的SignInActivity中获取:

       setResult(RESULT_OK);
       finish();

否则:

       setResult(RESULT_CANCELED);
       finish();

答案 1 :(得分:0)

完成基本完成当前活动。您应该首先启动要启动的活动,然后完成当前活动。要知道哪个活动膨胀,您可以在调用活动的intent extras中传递它。 只有在登录成功后才需要启动下一个活动。 例如

Intent intent = new Intent(getApplicationContext(), MyActivity.class);
    startActivity(intent);
    finish();

答案 2 :(得分:0)

Intent可以有另一个Intent参数

            Intent nextIntent=new Intent(A.this,B.class);
            Intent intent=new Intent(A.this,LoginActivity.class);
            intent.putExtra("nextIntent",nextIntent);

然后,当LoginActivity登录成功时,startActivity nextIntent

答案 3 :(得分:0)

您可以使用一个主机Activity和多个Fragments。登录片段将回调到Activity,以便它可以决定下一个片段。