当前一个片段中的某些任务完成时如何通知另一个片段中的适配器

Posted

技术标签:

【中文标题】当前一个片段中的某些任务完成时如何通知另一个片段中的适配器【英文标题】:How to notify the adapter in another fragment when some task completes in previous fragment 【发布时间】:2015-12-03 00:27:51 【问题描述】:

我有一个片段(片段A),我正在其中进行异步调用,并导航到另一个片段(片段B)。 FragmentB中有一个listview,在调用onPostExecute方法时需要刷新,在FragmentA中。如何做到这一点?

我尝试在 FragmentB 中将适配器设为静态,并从 FragmentA 的 onPostExecute 通知它。但这无济于事。

 protected void onPostExecute(String isEmpty) 
        pDialog.dismiss();
        FragmentB.adapter.notifyDateSetChanged();
        

请提出一些方法来做到这一点!

【问题讨论】:

查看以下链接以实现片段之间的通信接口developer.android.com/training/basics/fragments/… 【参考方案1】:

片段之间的通信应该通过容器活动。 在您的 FragmentB 中创建一个更新适配器数据的公共方法。 在 FragmentA 中,当检索到的数据调用 Activity 时,Activity 应该调用 FragmentB 请求刷新数据,并将他从 FragmentA 获取的数据传递给 FragmentB。

【讨论】:

【参考方案2】:

您在网络调用之后获得的任何数据,将其传递给 FragmentA 中接口的方法。让您的容器活动实现该接口并覆盖其方法。从您的容器活动中,现在将数据从 FragmentA 传递到您的其他 Fragment。这是最模块化的方法。 Here 是一个可能对您有所帮助的链接。

【讨论】:

FragmentB fragment = (FragmentB) getSupportFragmentManager().findFragmentById(R.id.fragmentPostsOffer);另外,我忘了提一下,FragmentA 有 2 个选项卡,其中一个包含 FragmentB。【参考方案3】:

创建一个类似的接口:

public interface SetNofifyListener 

    public void onNotify(boolean flag);

然后在你的异步类中:

SetNofifyListener mSetOnNotify;

 protected void onPostExecute(String isEmpty) 
        pDialog.dismiss();

        mSetOnNotify.onNotify(true);
 

然后在你的 fragmentB 中实现这个接口,并在它的 @Override 方法中做任何你想做的事情。

【讨论】:

以上是关于当前一个片段中的某些任务完成时如何通知另一个片段中的适配器的主要内容,如果未能解决你的问题,请参考以下文章

如何将列表视图中的数据从一个片段发送到另一个片段

如何将值从一个活动中的片段传递到另一个活动? [复制]

Android:单击片段中的按钮时如何通知活动? [复制]

android片段-当另一个片段被推到它上面时如何保存片段中的视图状态

当另一个片段中的数据发生更改时,如何刷新一个片段中的 RecyclerView

如何在 BottomSheetDialogFragment 顶部显示另一个片段