0

New... > Android 4.2 SDK の ADT Tools を使用して Eclipse 内のAndroid Activityに移動すると、デフォルトのLoginActivityを使用しています。

電子メール フィールド、パスワード フィールド、および「サインインまたは登録」というボタンが含まれています。そのボタンをクリックすると、偽の非同期ネットワーク リクエストを実行し、いくつかのメソッドを呼び出して進行状況バーを表示し、ダミー データでユーザー ログインを確認し、すべてが成功した場合に最後に呼び出されるものを呼び出します。

        @Override
        protected void onPostExecute(final Boolean success) {
            mAuthTask = null;
            showProgress(false);

            if (success) {
                //finish();
                Intent intent = new Intent(LoginActivity.this, MainActivity.class)
                    .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME);
                startActivity(intent);
            } else {
                mPasswordView
                        .setError(getString(R.string.error_incorrect_password));
                mPasswordView.requestFocus();
            }


}

私は finish() をコメントアウトしましたが、代わりに、メインのアプリ ウィンドウ (ログイン状態) となる新しいアクティビティ ウィンドウを開きたいと考えています。私は昨日 Android を使い始めたばかりですが、アクティビティの代わりにこの種のフラグメントを使用する例をたくさん見てきました。それは問題ですか?とにかく、正常に動作し、新しいアクティビティが開きますが、「戻るボタン」を押すとログイン画面が表示されます。以下でアクティビティに設定したフラグは、履歴スタックをクリアするために必要なものであると確信していますが、機能しません。

上記のコードを修正して履歴スタックをクリアするにはどうすればよいですか? つまり、ログインした後、新しいアクティビティに移動し、[戻る]を押すと、ホーム画面に移動する必要があります。

アップデート

LoginActivity、MainActivity、AndroidManifest のコードを添付しました。

リンク: https://gist.github.com/sahat/5445657

4

2 に答える 2

1

Intent.FLAG_ACTIVITY_CLEAR_TOP代わりに使用してください。使用しているフラグは新しいタスクを作成しますが、残りのスタックには何もしません。このフラグは他のすべてをクリアしますActivities。が存在する場合Activity、残りの を消去するだけなActivitiesので、MainActivityが一番上になります。

FLAG_ACTIVITY_CLEAR_TOP

編集

次から戻った後にホーム画面に移動したい場合は、ログイン時にログインをActivity呼び出すだけです。これにより、スタックからログインページが削除されます。指定することもできますfinish()Activity

android:noHistory="true"

Activityのログイン画面のタグでmanifest

于 2013-04-23T16:57:22.877 に答える
1

これを試して

@Override
    protected void onPostExecute(final Boolean success) {
        mAuthTask = null;
        showProgress(false);

        if (success) {
            Intent intent = new Intent(LoginActivity.this, MainActivity.class)
            startActivity(intent);
            finish();
        } else {
            mPasswordView
                    .setError(getString(R.string.error_incorrect_password));
            mPasswordView.requestFocus();
        }

}

于 2013-04-23T18:50:38.030 に答える