listView を使用したアクティビティ A があり、ユーザーはアクティビティ B を開始する項目をクリックします。アクティビティ B でのユーザーの操作に応じて、アクティビティ A の listView が変更される場合があります。
だから私の質問:
ユーザーがアクティビティ B から戻ったときにアクティビティ A が再開されたことを伝えるにはどうすればよいですか?
アクティビティ A に戻ったときに listView の更新を通知できるようにしたいと考えています。
ありがとう!
listView を使用したアクティビティ A があり、ユーザーはアクティビティ B を開始する項目をクリックします。アクティビティ B でのユーザーの操作に応じて、アクティビティ A の listView が変更される場合があります。
だから私の質問:
ユーザーがアクティビティ B から戻ったときにアクティビティ A が再開されたことを伝えるにはどうすればよいですか?
アクティビティ A に戻ったときに listView の更新を通知できるようにしたいと考えています。
ありがとう!
アクティビティ A のリストビューを更新するコードを追加できます。onResume()
@Override
protected void onResume() {
super.onResume();
//Code to refresh listview
}
を使用startActivityForResult
するのが最もエレガントな方法です。OnResume
アプリを閉じて開くたびに発生し、特に大量のデータを更新している場合は、もう少し多くのリソースを使用します.
アクティビティの先頭でリクエスト コードを定数として宣言します。
public static final int OPEN_NEW_ACTIVITY = 123456;
これを新しいアクティビティを開始する場所に置きます。
Intent intent = new Intent(this, NewActivity.class);
startActivityForResult(intent, OPEN_NEW_ACTIVITY);
活動が終わったら何かをする。ドキュメントでは を使用することが推奨されていますresultCode
が、状況に応じて、結果はRESULT_OK
またはRESULT_CANCELED
ボタンが押されたときのいずれかになります。だから私はそれを除外します。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == OPEN_NEW_ACTIVITY) {
// Refresh your ListView here
// ....
}
}
これを Fragment に入れるときになぜか苦労しました。したがって、それをActivityに入れる必要があります。
startActivityForResult を使用して B アクティビティを起動します。そして、アクティビティ A の onActivityResult() メソッドで、アクティビティ B からのデータを確認します。listView の notifyDataSetChanged を使用してコンテンツを更新します。