final ViewPager.OnPageChangeListener onPageChangeListener =
new ViewPager.OnPageChangeListener() {
@Override public void onPageSelected(int position) {
switch (position) {
case 0:
FragmentClass1 frag1 =
(FragmentClass1) viewPager.getAdapter()
.instantiateItem(viewPager, viewPager.getCurrentItem());
frag1.updateList("Custom text");
break;
case 1:
break;
case 2:
break;
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override public void onPageScrollStateChanged(int state) {
}
};
viewPager.addOnPageChangeListener(onPageChangeListener);
viewPager.setAdapter(adapter);
viewPager.post(new Runnable() {
@Override public void run() {
onPageChangeListener.onPageSelected(viewPager.getCurrentItem());
}
});
Иногда фрагмент может отправлять нулевой объект, поэтому вы можете запустить новый Runnable для решения проблемы при первой загрузке.
Спасибо, rick
Проблема была решена во многом благодаря комментариям. Я поделюсь тем, что было изменено, чтобы заставить его функционировать; Во-первых, мое использование BRAM было слишком высоким. Очевидно, что перед попыткой синтеза я не получил никаких предупреждений об этом, но я столкнулся бы с этим во время синтеза или реализации, поэтому я настроил это в соответствии с таблицей данных моего чипа, чтобы не использовать больше, чем имеющийся BRAM. Во-вторых, я использовал форму динамического среза, которая не поддерживалась в Vivado, но поддерживалась другими инструментами, такими как Quartus, поэтому я изменил ее, используя ссылку, указанную в комментарии @dwikle. После этого я остался с ошибкой, которая была просто глупой ошибкой с моей стороны в моем объявлении: я объявил один из моих параметров как вектор и попытался присвоить его массиву. Так что я изменил это. Спасибо всем.