AとBの2つのアクティビティがあります。Aにボタンがあり、押すとBへの新しいインテントが開始されます。それをして、アクティビティ B を再開したいのですが、実際にはアクティビティ B でネットワークを作成していて、ユーザーが更新しない限り保存したいと考えています。どうすればいいですか?前もって感謝します
4 に答える
使用する
@Override
public void onBackPressed(){
moveTaskToBack(true);
}
希望、それはあなたを助ける必要があります
これは、アーキテクチャを再考する必要があるようです。あなたは言う:
実際、私はアクティビティ B でいくつかのネットワーキングを行っており、ユーザーが更新しない限り保存したいと考えています。
この場合、ActivityB でネットワーキングを行いたくないでしょう。Service
ネットワーキングを行うには、ActivityB から開始する必要があるかもしれません。サービスとアクティビティは相互に通信できるため、アクティビティはネットワークの状態についてユーザーを最新の状態に保つことができます。ユーザーが ActivityB で [戻る] を押すと、(通常どおり) 終了して ActivityA に戻ることができます。この場合、サービスは引き続きネットワークを管理しています。ユーザーが (ActivityA から) ActivityB を再び開始すると、ActivityB の新しいインスタンスはサービスと通信して、ネットワークが進行中であるかどうかを確認できます。進行中の場合は、そのネットワークの現在の状態を取得したり、開始または停止したりできます。なんでもいい。
をオーバーライドする必要があります
onBackPressed
メソッドを開き、次のようなアクティビティを開始します。
@Override
public void onBackPressed() {
Intent intent = new Intent(this, activityA.class);
startActivityForResult(intent, PICK_CONTACT_REQ);
}
手遅れだと思いますが、同様の問題がありました。
私は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);
}