我创建了一个listfragment和一个如下所示的按钮(左图)
每当我点击一个ADD按钮时,就会打开一个新的Activity并在该用户内部写一些内容然后点击DONE,激活完成并返回到ListFragment,但点击DONE之后我将如何用新值更新ListFragment。我的意思是我在哪里可以写 notifyDataSetChanged。
注意:当我点击DONE时,数据将存储在数据库中,当ListFragment加载时,它将获取其中的数据
我正在使用android支持兼容性库
答案 0 :(得分: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。
答案 1 :(得分:1)
或者,您也可以在self.setListAdapter()
中再次致电onActivityResult()
。它对我来说很好。