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

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

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

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

我正在使用android支持兼容库

【问题讨论】:

    标签: android android-listview android-fragments android-listfragment


    【解决方案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()。对我来说效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多