3

我创建了一个列表片段和一个如下所示的按钮(左图)

每当我单击 ADD 按钮时,都会打开一个新的 Activity 并在该用户内部写一些东西并单击 DONE ,该 activty 完成并返回到 ListFragment ,但是在单击 DONE 后,我将如何使用新值更新 ListFragment 。我的意思是我在哪里可以写 notifyDataSetChanged。

在此处输入图像描述

注意:当我点击 DONE 时,数据将存储在数据库中,当 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 回答