11

AとBの2つのアクティビティがあります。Aにボタンがあり、押すとBへの新しいインテントが開始されます。それをして、アクティビティ B を再開したいのですが、実際にはアクティビティ B でネットワークを作成していて、ユーザーが更新しない限り保存したいと考えています。どうすればいいですか?前もって感謝します

4

4 に答える 4

22

使用する

@Override
    public void onBackPressed(){
        moveTaskToBack(true);
    }

希望、それはあなたを助ける必要があります

于 2012-12-19T10:39:47.720 に答える
1

これは、アーキテクチャを再考する必要があるようです。あなたは言う:

実際、私はアクティビティ B でいくつかのネットワーキングを行っており、ユーザーが更新しない限り保存したいと考えています。

この場合、ActivityB でネットワーキングを行いたくないでしょう。Serviceネットワーキングを行うには、ActivityB から開始する必要があるかもしれません。サービスとアクティビティは相互に通信できるため、アクティビティはネットワークの状態についてユーザーを最新の状態に保つことができます。ユーザーが ActivityB で [戻る] を押すと、(通常どおり) 終了して ActivityA に戻ることができます。この場合、サービスは引き続きネットワークを管理しています。ユーザーが (ActivityA から) ActivityB を再び開始すると、ActivityB の新しいインスタンスはサービスと通信して、ネットワークが進行中であるかどうかを確認できます。進行中の場合は、そのネットワークの現在の状態を取得したり、開始または停止したりできます。なんでもいい。

于 2012-12-19T17:24:49.733 に答える
1

をオーバーライドする必要があります

onBackPressed

メソッドを開き、次のようなアクティビティを開始します。

@Override
    public void onBackPressed() {
    Intent intent = new Intent(this, activityA.class);
    startActivityForResult(intent, PICK_CONTACT_REQ);
}
于 2012-12-19T09:43:16.580 に答える
0

手遅れだと思いますが、同様の問題がありました。

私は2つの活動A、BとAの次のボタンを持っていました.

A->次のボタンを押す->B->戻るボタンを押す->A->次のボタンを押す->Bのようにしようとすると、戻るボタンを押すとBの画面が壊れました。そのため、2 回目に B に戻ったとき、それは新しく作成された B でした (入力したすべての情報が失われました)。

つまり、元の B に戻りたいだけなのに、A->B->A-> 新しい B のように感じました。:(

私がしたことは、アクティビティ B で onBackPressed() 関数をオーバーライドして、アクティビティを破壊しないようにすることでした。また、A アクティビティが既に実行されている場合に、新しい A アクティビティを作成する代わりに、それを前面に引き上げるようにフラグを設定しました。

@Override
public void onBackPressed() {
        Intent intent = new Intent(getApplicationContext(), ActivityA.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(intent);
    }

次に、アクティビティ A の次のボタンの onclicklistener 関数に対して、同様にフラグを設定します。

public void onClickNextbutton(View v){
        Intent intent = new Intent(getApplicationContext(), ActivityB.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(intent);
    }
于 2021-11-03T02:26:01.110 に答える