3

次のようなリストフラグメントとボタンを作成しました(左の画像)

[追加]ボタンをクリックすると、新しいアクティビティが開き、そのユーザー内で何かを書き込んで[完了]をクリックすると、アクティビティが終了してListFragmentに戻りますが、[完了]をクリックすると、ListFragmentを新しい値で更新するにはどうすればよいですか。つまり、notifyDataSetChangedをどこに書き込むことができますか。

ここに画像の説明を入力してください

注:[完了]をクリックすると、データはデータベースに保存され、ListFragmentが読み込まれると、その中のデータがフェッチされます。

私はAndroidサポート互換性ライブラリを使用しています

4

2 に答える 2

5

StartActivityForResult()を使用する必要があります。

//place in shared location
int MYACTIVITY_REQUEST_CODE = 101

//start Activity
Intent intent = new Intent(getActivity(), MyActivity.class);
startActivityForResult(intent, MYACTIVITY_REQUEST_CODE);

次に、フラグメント内のonActivityResult()をオーバーライドする必要があります。メソッドは、アクティビティが閉じられた後に呼び出されます。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if ((requestCode == MYACTIVITY_REQUEST_CODE) && (resultCode == Activity.RESULT_OK))
        adapter.notifyDataSetChanged()
}

結果コードは、次の方法で終了する前にアクティビティに設定されます。

setResult(Activity.RESULT_OK)

requestCodeとresultCodeの使用は実際にはオプションです。フラグメントから複数のアクティビティを起動する場合にのみ、requestCodeを使用する必要があります。アクティビティから異なる結果を返す必要がある場合にのみ、resultCodeを使用する必要があります。

于 2012-03-23T17:16:15.050 に答える
1

self.setListAdapter()または、もう一度電話をかけることもできますonActivityResult()。それは私にとってはうまくいきました。

于 2012-05-15T11:12:08.540 に答える