我目前有3个片段(标签),目前正在使用viewpager。我有每个片段的1个列表视图,我想在点击视图后通知对方。我尝试在mainactivity上使用setOnPageChangeListener()上的notifyDataSetChanged()。问题是,当我更改标签时,我可以看到插入的数据。由于更改标签后发生了更改。
答案 0 :(得分:3)
您可以考虑使用广播接收器来通知数据集更改。
在接收片段中
public static final string RADIO_DATASET_CHANGED = "com.yourapp.app.RADIO_DATASET_CHANGED";
private Radio radio;
在onCreate方法中:
radio = new 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
}
}
在恢复方法的接收片段中:
@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
}
}
片段传输数据集已更改
然后从通知数据集交换的片段中执行:
Intent intent = new Intent(ReceivingFragment.RADIO_DATASET_CHANGED);
getActivity().getApplicationContext().sendBroadcast(intent);
答案 1 :(得分:0)
在您的MainActivity中。尝试使用此代码。这可能有所帮助。
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
if (position ==0 )
viewPager.getAdapter().notifyDataSetChanged();
if (position == 1)
viewPager.getAdapter().notifyDataSetChanged();
if (position == 2)
viewPager.getAdapter().notifyDataSetChanged();
}