2

特定の画面にいて、ユーザーが認証が必要なアプリの特定の部分にアクセスしようとすると、続行する前にログイン画面に移動するアプリがあります。

アプリが現在行っていることは、画面 3 にいるが、画面 4 に移動したいが、最初にログインして画面 4 に移動する必要があるとします。ログイン画面が表示され、ログインすると、ユーザーは画面にリダイレクトされます1 手順を戻して、元の画面に戻す必要がありました。

私が欲しいのは、ユーザーがボタンをクリックして画面4に移動すると、ログイン画面が表示され、ログインすると、ユーザーは画面3に戻ってボタンを再度クリックすることなく、画面4に送信されます。

私が試したのは、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

1 つのホスト アクティビティと多くのフラグメントを使用できます。ログイン フラグメントはアクティビティにコールバックして、次のフラグメントについて決定できるようにします。

于 2016-04-21T09:40:25.933 に答える
0

Finish は、基本的に現在のアクティビティを終了します。最初に開始したいアクティビティを開始してから、現在のアクティビティを終了する必要があります。どのアクティビティがインフレートするかを知るには、呼び出しアクティビティのインテント エクストラで渡すことができます。ログインが成功した後でのみ、次のアクティビティを開始する必要があります。例えば

Intent intent = new Intent(getApplicationContext(), MyActivity.class);
    startActivity(intent);
    finish();
于 2016-04-21T09:30:14.757 に答える