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的主要内容,如果未能解决你的问题,请参考以下文章