gpt4 book ai didi

android - 来自不同 fragment 的 notifyDataSetChanged()

转载 作者:行者123 更新时间:2023-11-29 17:31:22 24 4
gpt4 key购买 nike

我目前有 3 个 fragment (标签),目前正在使用 viewpager。我为每个 fragment 有 1 个 ListView ,我想在单击 View 后发生某些事情时通知另一个。我尝试在 mainactivity 的 setOnPageChangeListener() 上使用 notifyDataSetChanged()。问题是,当我更改选项卡时,我可以看到正在插入的数据。由于更改发生在更改选项卡之后。

最佳答案

您可以考虑使用广播接收器来通知数据集更改。

在您的接收 fragment 中

public static final string RADIO_DATASET_CHANGED = "com.yourapp.app.RADIO_DATASET_CHANGED";

private Radio radio;

在 onCreate 方法中:

radio = new Radio();

接收 fragment 中的 radio 类:

private class Radio extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(RADIO_DATASET_CHANGED)){
//Notify dataset changed here
}
}

在 resume 方法的接收 fragment 中:

@Override
protected void onResume() {
super.onResume();
//using intent filter just in case you would like to listen for more transmissions
IntentFilter filter = new IntentFilter();
filter.addAction(RADIO_DATASET_CHANGED);
getActivity().getApplicationContext().registerReceiver(radio, filter);
}

确保我们在 onDestroy 方法中取消注册接收者

 @Override
protected void onDestroy() {
super.onDestroy();

try {
getActivity().getApplicationContext().unregisterReceiver(radio);
}catch (Exception e){
//Cannot unregister receiver
}

}

fragment 传输数据集已更改

然后从通知数据集更改的 fragment 中执行:

Intent intent = new Intent(ReceivingFragment.RADIO_DATASET_CHANGED);
getActivity().getApplicationContext().sendBroadcast(intent);

关于android - 来自不同 fragment 的 notifyDataSetChanged(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32797196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com