2

私には3つの活動があります:

  1. ログイン画面。
  2. メインスクリーン。
  3. プロフィール画面。

ログイン画面は、最初に呼び出されるメイン アクティビティであり、ログイン ボタンをクリックすると、次のコードを使用してメイン画面アクティビティを呼び出します。

finish(); // I am calling finish because I don't want user to press back key at mainscreen and get back to login screen.
Intent it = new Intent(LoginScreen.this,MainScreen.class);
startActivity(it);

私のメインスクリーンにはログアウトボタンがあり、ログアウトには次のコードを使用しています:

finish();
Intent it = new Intent(MainScreen.this,LoginScreen.class);
containerObject.startActivity(it);

理由はわかりませんが、このコードではログイン画面に移動しません。

上記のコードをこのコードに変更すると:

finish();
Intent it = new Intent(MainScreen.this,ProfileScreen.class);
containerObject.startActivity(it);

コードはまったく問題なく動作し、プロファイル画面に移動します。

マニフェストに 3 つのアクティビティをすべて追加したことを明確にさせてください。

「LoginScreen」が主なアクティビティであるという理由だけで、この問題が発生していますか?

4

1 に答える 1

0

遅いよりはましです。

ログアウト ボタンのクリック ハンドラーでは、MainScreen アクティビティが既に終了しているため、containerObject を使用してアクティビティを開始する必要があるため、アクティビティの親コンテナーに移動する必要があります。

logoutButtonClick(../..[

    finish();
    Intent it = new Intent(MainScreen.this,LoginScreen.class);
    containerObject.startActivity(it);
}

アクティビティが確実に終了するようにするには、オンクリック ハンドラー内で this.finish を呼び出しますが、インテントを開始した後です。

logoutButtonClick(../.. {
    startActivity(new Intent(this, LoginScreen.class));
    this.finish();
}

次に、LoginScreen アクティビティで onBackPressed イベントをオーバーライドします。したがって、バックプレスはユーザーをログイン画面に移動させ続けます。

@Override
public void onBackPressed() {
    startActivity(new Intent(this, LoginScreen.class));
    this.finish();
}

3 つのアクティビティ間でアプリの実行中にナビゲーションをどのように管理したいのかわかりません。そのため、ProfileScreen アクティビティと他の 2 つのアクティビティの間を移動する詳細については説明しませんが、これを進めるのに十分な情報があります。

アプリのパスワードで保護された領域を保護したい場合は、すべてのバックプレス イベントをオーバーライドして管理し、アプリ全体とアプリケーションのライフサイクル全体でナビゲーションを慎重に管理するため、保護されているアクティビティでアプリを閉じて再度開くことはできません。パスワード付き。

于 2015-11-25T12:23:01.627 に答える