Activity 完成时更新 ListFragment

Posted

技术标签:

【中文标题】Activity 完成时更新 ListFragment【英文标题】:update ListFragment when Activity finishes 【发布时间】:2012-04-08 06:20:23 【问题描述】:

我创建了一个 listfragment 和一个如下所示的按钮(左图)

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

注意:当我点击 DONE 时,数据将存储在数据库中,当 ListFragment 加载时,它将获取其中的数据

我正在使用android支持兼容库

【问题讨论】:

【参考方案1】:

您应该使用 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()

结果代码在activity中设置完成前通过:

setResult(Activity.RESULT_OK)

使用 requestCode 和 resultCode 确实是可选的。如果您从片段中启动多个活动,则只需要使用 requestCode。如果您需要从活动返回不同的结果,您只需要使用resultCode。

【讨论】:

我应该在 onActivityResult 中写什么?【参考方案2】:

或者,您也可以在onActivityResult() 中再次致电self.setListAdapter()。对我来说效果很好。

【讨论】:

以上是关于Activity 完成时更新 ListFragment的主要内容,如果未能解决你的问题,请参考以下文章

当 Android 中的 Activity 内容更改时,小部件不更新

主 Activity 完成后如何从服务中显示 Toast?

如何使用意图来更新活动?

如何使用来自 Activity 的数据更新小部件?

从 Activity 更新 Android 小部件

插入后使用 SQL Server 触发器更新另一个表中的列