我有这个问题,我有一个带有 ViewPager
和一个 ViewPagerAdapter
的 FragmentActivity
。
在这个 ViewPager 中,我有 3 个 Fragments
,每个 fragment 都包含一个 TableLayout
,它使用 2dArrayList
以编程方式填充。
单击 FragmentActivity
布局中的按钮,我过滤 2dArrayList
中的数据,基本上需要重新创建所有 3 个 Fragments
使用新数据集(在所有数据集中运行 onCreateView
方法)。
所以我为这个按钮创建了一个 onClickListener
:
private class SlicerSelectedOnClickListener implements OnClickListener {
private ODSharedSlicer slicer;
public SlicerSelectedOnClickListener(ODSharedSlicer slicer) {
super();
this.slicer = slicer;
}
public void onClick(View v) {
String slicerValue = ((Button) v).getText().toString();
Log.d(TAG,"Slicer value: "+ slicerValue +" chosen");
application.currentReport.getODSharedSlicers().get(0).getSharedSlicerSelectedMemebers().add(slicerValue);
ViewGroup parent = (ViewGroup) ((Button) v).getParent();
for (int i = 0; i < parent.getChildCount(); i++)
{
if ((parent.getChildAt(i) != v) && (parent.getChildAt(i) instanceof ToggleButton))
{
((ToggleButton) parent.getChildAt(i)).setChecked(false);
}
}
mPagerAdapter.notifyDataSetChanged();
}
}
如您所见,我有一个 mPagerAdapter.notifyDataSetChanged();
如此处建议:
How to recreate fragment with viewpager intentionally?
在此方法结束时,因此我希望适配器重新创建所有 Fragment
,但任何 fragment 中的 onCreateView
都不会运行。
任何人都可以建议我做错了什么。 任何帮助将不胜感激。
最佳答案
对于那些仍然面临同样问题的人,当我拥有带有七个 fragment 的 ViewPager
时,我遇到了同样的问题。这些 fragment 的默认设置是从服务中加载英文内容,但这里的问题是我想从设置 Activity 中更改语言,完成设置 Activity 后,我希望主 Activity 中的 ViewPager
将 fragment 刷新为如果用户在此处选择阿拉伯语,则匹配用户的语言选择并加载阿拉伯语内容我从第一个 trr 开始所做的工作:D
1.你必须使用 FragmentStatePagerAdapter 。*
mainActivity 我重写了
onResume
并做了以下操作if (!(mPagerAdapter == null)) { mPagerAdapter.notifyDataSetChanged(); }
我在
mPagerAdapter
中覆盖getItemPosition()
并使其返回 POSITION_NONE。@Override public int getItemPosition(Object object) { return POSITION_NONE; }
像魅力一样工作
关于android - 如何在 ViewPager : 中重新创建所有 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671695/