В настоящее время у меня есть 3 фрагмента (вкладки) и в настоящее время используется viewpager. У меня есть 1 список для каждого фрагмента, и я хочу уведомить другого, когда что-то произойдет, после нажатия на представление. Я попытался использовать notifyDataSetChanged() для setOnPageChangeListener() для mainactivity. Проблема в том, что я могу видеть, что данные вставляются при изменении вкладок. Поскольку изменение происходит после изменения вкладок.notifyDataSetChanged() из другого фрагмента
ответ
Вы можете использовать широковещательные приемники для уведомления об изменении набора данных.
В вашем приемном фрагменте
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
}
}
Фрагмент передачи набора данных изменилась
Затем из фрагмента, который уведомляя datasetchange просто сделать:
Intent intent = new Intent(ReceivingFragment.RADIO_DATASET_CHANGED);
getActivity().getApplicationContext().sendBroadcast(intent);
Ну, IT FREAKING WORKED! : D Я сейчас схожу с ума, если вы можете просто увидеть меня. Огромное спасибо. : D Я только что заметил, что notifydatasetchanged() заставлял мою салфетку вкладок замедляться. Это не сработало, когда я попробовал notifydatasetchaned, вместо этого я снова позвонил в свой список. это сработало. и его более гладкой, чем раньше. :) –
так рад за тебя! –
Просто интересно? как работает незарегистрированныйReceiver()? Кажется, я не могу назвать это? –
В вашем 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();
}
Я думаю, что это точно, что @Renz делает прямо сейчас – maciekjanusz
Вот где я его положил. на onpageslected из setonpagechangelistener. –
- 1. notifydatasetchanged внутри фрагмента с
- 2. RecyclerView notifydatasetchanged не вызывается из фрагмента
- 3. Вызов фрагмента из другого фрагмента
- 4. Выполнить метод фрагмента из другого фрагмента
- 5. Вызов фрагмента из другого фрагмента при нажатии
- 6. фрагмента Открытия из другого фрагмента: Выдвижные
- 7. Вызов одного фрагмента из другого фрагмента Ошибка?
- 8. Чтобы вызвать метод фрагмента из другого фрагмента
- 9. вызова ширина фрагмента из другого фрагмента
- 10. notifyDataSetChanged() от DialogFragment к GridView адаптера фрагмента
- 11. заменить фрагмент из другого фрагмента
- 12. Android: открытие фрагмента из другого
- 13. Открытый фрагмент из другого фрагмента
- 14. фрагмент из фрагмента активности вызывает startactivityforresult, но notifydatasetchanged не работает
- 15. Clear ArrayList и do notifyDataSetChanged в адаптере ListView из фрагмента
- 16. Вызов метода из одного фрагмента из другого
- 17. Обновление TextView в ViewPager из другого фрагмента
- 18. Приложение сбой при запуске другого фрагмента из существующего фрагмента
- 19. Refresh ListFragment из другого действия фрагмента и фрагмента
- 20. Хотите вызвать метод фрагмента из другого фрагмента в android 2.2
- 21. вызов фрагмента из другого фрагмента при нажатии кнопки
- 22. Каков правильный способ раздувания фрагмента из другого фрагмента?
- 23. Как удалить ViewPager из текущего фрагмента при вызове другого фрагмента
- 24. Использование намерения для вызова фрагмента из другого фрагмента
- 25. Вызов фрагмента из другого фрагмента после некоторой задержки
- 26. Экспорт подзаголовка фрагмента из другого фрагмента как Png
- 27. получить edittext данные из другого фрагмента ViewPager
- 28. изменить элементы в ListView из другого фрагмента
- 29. Android set Textview из другого фрагмента
- 30. Как показать фрагмент из другого фрагмента?
Поскольку вы используете пейджер представления, у него есть возможность выбрать сколько фрагментов нужно загружать по обе стороны от текущего фрагмента, скажем, что 1.So 1 фрагмент будет загружен по обе стороны от текущего, поэтому, если вы попытаетесь ссылаться на любой фрагмент, отличный от них, то коэффициенты либо ничего не будут произойдет, или он потерпит крах и скажет вам, что такого вида или адаптера нет, это не ответ, а что-то, на что нужно обратить внимание, когда вы его получите, мне тоже нужно то же самое. –
Спасибо за примечание. Это очень раздражает, когда данные заселяются после изменения вкладок. XD –