我想在 viewpager 中显示一个相同的 fragment ,例如具有一周中某一天的 Activity 的 fragment ,用于所有具有不同数据的日子。我将为要实例化并显示相关 Activity 的每个 fragment 提供 dayNumber
参数。问题是无论我传递什么参数,我都会在每个选项卡中看到相同的 fragment 。我认为寻呼机添加或实例化的最后一个 fragment 会覆盖所有其他选项卡 fragment 实例。因为 当我在 expendableList View 中打开一个列表项时,它会在寻呼机的所有 fragment 中打开。
这就是我使用寻呼机和 fragment 的方式。
寻呼机
mPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// When swiping between pages, select the
// corresponding tab.
if (bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS)
if (bar.getSelectedNavigationIndex() != position)
bar.setSelectedNavigationItem(position);
// should be changed when some solution comes.
if (tab == 0) {
Fragment ev;
if ((ev = (Fragment) mPagerAdapter.instantiateItem(mPager,
0)) instanceof frTimetable)
((frTimetable) ev).refresh(day.Monday);
} else if (tab == 1) {
Fragment ac;
if ((ac = (Fragment) mPagerAdapter.instantiateItem(mPager,
1)) instanceof frTimetable)
((frTimetable) ac).refresh(day.Tuesday);
}
tab = position;
}
fragment
{
//class other methods
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fr_timetable, container, false);
ExpandList = (ExpandableListView) view.findViewById(R.id.expActivityView);
//I will change the list items in refresh method of the fragment for a day type
ExpListItems = new ArrayList<Items>(Timetable_Provider.getAllActivites());
ExpAdapter = new ExpandListAdapter(getActivity(), ExpListItems);
ExpandList.setAdapter(ExpAdapter);
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
最佳答案
instantiateItem()
当然不是你想要的。这是由 ViewPager
调用的,而不是由 ViewPager
的使用者调用的。
通常,在设置页面时,您会在 PagerAdapter
中向 ViewPager
提供数据。例如,this sample app使用参数 Bundle
将页面的页码传递给作为页面实现的 Fragment
。
如果页面内的数据需要更新,理想情况下,页面本身会自行确定是否需要更新并进行处理。或者,使用事件总线(例如,LocalBroadcastManager
、greenrobot 的 EventBus、Square 的 Otto)来发布相关页面可以获取的信息。没有使用 FragmentPagerAdapter
或 FragmentStatePagerAdapter
从页面本身外部访问现有页面的好方法(例如,让 Activity 将数据推送到页面中),这是原因之一I wrote ArrayPagerAdapter
.
关于android - 在 View 寻呼机的选项卡中显示具有不同参数的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27342194/