2

私は 2 つのアクティビティを持つ単純な Android アプリケーションを作成しています。1 つの MainActivity と 1 つの InfoActivity です。ActionBar にボタンがあり、クリックすると InfoActivity が開きます。私の InfoActivity には、InfoActivity を削除して再度 MainActivity を開く戻るボタンがあります。MainActivity を閉じずに InfoActivity を開くことはできますか?

メイン アクティビティのインターネットから JSON を解析していますが、InfoActivity を閉じたときにすべてを再度ロードしたくありません。

InfoActivity を開くためのコード:

  private View.OnClickListener onInfoBtnClick = new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent(MainActivity.this, InfoActivity.class);
            startActivity(intent);
        }
    };

InfoActivity クラスで InfoActivity を閉じるためのコード:

private View.OnClickListener onBackBtnClick = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(InfoActivity.this, MainActivity.class);
        startActivity(intent);
    }
};
4

2 に答える 2

4

MainActivity を閉じずに InfoActivity を開くことはできますか?

いいえ、状態になるため、InfoActivity はフォアグラウンドで呼び出され、MainActivity はバックグラウンドで呼び出されますstopped。問題は、このように InfoActivity で Intent を起動すると、古いインスタンスのほかに MainActivity の新しいインスタンスが存在することです。

Intent 呼び出しにフラグを追加して、MainActivity の新しいインスタンスを防止します。その後、スタックから呼び出されます。

private View.OnClickListener onBackBtnClick = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(InfoActivity.this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }
};

またはfinish()、hamad と Aerrow が提案したような単純な call 。その後、InfoActivity が破棄され、MainActivity がスタックから呼び出されます。

于 2013-10-03T09:08:00.883 に答える
2

を使用して情報活動を開始

Intent i = new Intent(MainActivity.this, InfoActivity.class);
startActivityForResult(i, 1);

インフォアクティビティでは、ボタンをクリックして呼び出すだけで、finish()アクティビティを再度開始しないでください。その後、前のアクティビティに戻ります

于 2013-10-03T08:59:32.977 に答える