活动完成后更新ListFragment

Hun*_*unt 3 android android-listview android-fragments android-listfragment

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

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

在此输入图像描述

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

我正在使用android支持兼容库

Kev*_*ood 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);
Run Code Online (Sandbox Code Playgroud)

然后,您应该覆盖片段中的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()
}
Run Code Online (Sandbox Code Playgroud)

结果代码在活动完成之前在活动中设置:

setResult(Activity.RESULT_OK)
Run Code Online (Sandbox Code Playgroud)

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