私の Android アプリには、プロファイル情報を表示するアクティビティがあります。次に、新しいアクティビティを開き、アクティビティに変更を加えます。変更を保存すると、編集アクティビティから編集アクティビティが閉じられ、プロファイル表示アクティビティに戻ります。データを更新するには、このアクティビティを再開する必要があります。
現在のアクティビティを開いたアクティビティを再開する方法はありますか?
私の Android アプリには、プロファイル情報を表示するアクティビティがあります。次に、新しいアクティビティを開き、アクティビティに変更を加えます。変更を保存すると、編集アクティビティから編集アクティビティが閉じられ、プロファイル表示アクティビティに戻ります。データを更新するには、このアクティビティを再開する必要があります。
現在のアクティビティを開いたアクティビティを再開する方法はありますか?
親アクティビティと子アクティビティを通信するAndroid アクティビティ結果パターンを使用します。
プロフィール アクティビティ (親) で:
@Override
public void onClick(View v) {
startActivityForResult(
new Intent(this, NameActivity.class),
1); // 1 to identify caller activity.
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
updateProfile();
}
}
エディター アクティビティ (子) で:
@Override
public void onClick(View v) {
setResult(
RESULT_OK);
finish();
}
アクティビティ表示;
活動の変更;
アクティビティ D でアクティビティ M を開始するときは、D.finish(); を実行しないでください。その後、M.finish() を実行すると、アクティビティ D が既に存在するため、アクティビティ D を「再起動」する必要はありません。
「データを更新する」には 2 つの選択肢があります。
彼らが言ったように1.startActivityForResult。これ以上説明しません。
2.キャッシュを作成します。いくつかの静的変数、sqlite、さらには sharedPreference にデータを保存します。その後、アクティビティ D の onResume() で、それらのデータを取得して表示します。
アクティビティ A を「再開」する必要はありません。
電話をかけstartActivityForResult(Intent, int)
て新しいアクティビティを開始し、電話を介して追加料金を受け取ることができonActivityResult(int, int, Intent)
ます。
http://developer.android.com/reference/android/app/Activity.html#StartingActivities
または、画面が表示されるたびに呼び出されるonResume()メソッドを調べます。アクティビティ B (例: SharedPreference またはデータベース レコード) で何らかの状態を永続化すると仮定すると、onResume() でアクティビティ A を更新できます。
これを試してください: A が B を呼び出しており、B が終了したときに A を更新する必要がある場合、A で B を で起動しstartActivityForResult()
ます。B が戻ると、onActivityResult()
A のメソッドが呼び出されます。この (A の) メソッドでは、必要に応じて、格納されている値が変更されていることをテストできます。この時点で、次のようなことを行います。
finish();
startActivity(intent); //start the activity A