2

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

该应用程序当前所做的是,假设我在屏幕 3 上,但想进入屏幕 4,但我需要先登录才能进入屏幕 4。显示登录屏幕,一旦登录,用户将被重定向到屏幕1 必须返回这些步骤才能返回他们所在的屏幕。

我想要的是,当用户单击按钮转到屏幕 4 时,将显示登录屏幕,一旦登录,用户将被发送到屏幕 4,而无需返回屏幕 3 然后再次单击该按钮。

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

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

谢谢

编辑:标题可能具有误导性,我想不出更好的方法来改写标题。如果可以,请继续请求编辑

4

4 回答 4

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();
于 2016-04-21T09:28:30.540 回答
0

完成将基本上完成当前活动。您应该首先开始您想要开始的活动,然后完成当前活动。要知道哪个活动膨胀,您可以在调用活动的意图附加内容中传递它。登录成功后才需要开始下一个活动。例如

Intent intent = new Intent(getApplicationContext(), MyActivity.class);
    startActivity(intent);
    finish();
于 2016-04-21T09:30:14.757 回答
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

于 2016-04-21T09:34:13.840 回答
0

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

于 2016-04-21T09:40:25.933 回答