11

listView を使用したアクティビティ A があり、ユーザーはアクティビティ B を開始する項目をクリックします。アクティビティ B でのユーザーの操作に応じて、アクティビティ A の listView が変更される場合があります。

だから私の質問:

ユーザーがアクティビティ B から戻ったときにアクティビティ A が再開されたことを伝えるにはどうすればよいですか?

アクティビティ A に戻ったときに listView の更新を通知できるようにしたいと考えています。

ありがとう!

4

4 に答える 4

14

アクティビティ A のリストビューを更新するコードを追加できます。onResume()

@Override
protected void onResume() {
    super.onResume();
    //Code to refresh listview
}
于 2012-08-14T05:41:03.303 に答える
8

を使用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に入れる必要があります。

于 2016-05-14T13:52:15.337 に答える
1

startActivityForResult を使用して B アクティビティを起動します。そして、アクティビティ A の onActivityResult() メソッドで、アクティビティ B からのデータを確認します。listView の notifyDataSetChanged を使用してコンテンツを更新します。

于 2012-08-14T05:37:43.337 に答える