2

私のアプリには3つの主要なアクティビティがあります。

  1. スプラッシュアクティビティ
  2. ログインアクティビティ
  3. メニューアクティビティ

アプリを起動すると、スプラッシュ画面が4秒で動作し、ログインアクティビティになります。ユーザーが正常にログインすると、アプリはメニューアクティビティに移動します。私のメニューには、ログアウトボタンがあります。ユーザーがそれをクリックすると、アプリはログインアクティビティに移行します。正常に動作します。しかし、ユーザーがログアウトしてデバイスの戻るボタンをクリックしたくない場合は、アプリを直接終了したいと思います。この問題の解決策が見つからなかった場合、ユーザーはログイン画面に移動し、次にスプラッシュ画面に移動し、最後に戻るボタンを使用してアプリを終了するときに終了する必要があります。どのソリューションを使用する必要がありますか?

4

5 に答える 5

7

ログインが成功するとfinish()、メニュー アクティビティを開始した直後にログイン アクティビティを呼び出すことができます。これにより、ログイン アクティビティがバック スタックから効果的に削除されます。

編集: 以下のコメントで述べたように、これはスプラッシュ アクティビティにも適用されます。

于 2012-08-28T14:20:30.427 に答える
3

@Keyboardsurfer が提供するソリューションは非常にうまく機能しますが、戻るボタン イベントを処理する場合は、以下のコードを使用して戻るボタン イベントに関する通知を受け取ります。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        Log.d(this.getClass().getName(), "back button pressed");  
        // your code to handle back button event.
        return true;
    }
    return super.onKeyDown(keyCode, event);
}  
于 2012-08-28T14:27:14.653 に答える
2

ログインが成功したら、次のようにメニュー アクティビティを呼び出す必要があります。

Intent intent=new Intent(LoginActivity.this,MenuActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
this.finish();

ユーザーがSharedPreferencesを介してログインしている場合、スプラッシュアクティビティをチェックインしていると思います。2つのアクティビティのいずれかを呼び出すときに指定したのと同じ方法でスプラッシュアクティビティを閉じる必要があります。

于 2012-08-28T16:10:37.660 に答える
0

Activity の (Splash のみ) onPause メソッドをオーバーライドする必要があります。

方法は次のとおりです。

 @Override
protected void onPause() {

    super.onPause();
    this.finish();

}

ログインアクティビティでは、ログインが完了した後にfinishメソッドを呼び出します。回答が編集されました(以下の説明を参照してください)

于 2012-08-28T14:31:04.183 に答える
0

私はそれが other で予期しない動作を引き起こすとは思わない.原因は他でActivitiesはなくオーバーライドされた.Splash ActivityonPause()

于 2015-06-30T13:58:35.523 に答える