android - 如何在 ViewPager : 中重新创建所有 fragment

标签 android android-viewpager

我有这个问题,我有一个带有 ViewPager 和一个 ViewPagerAdapterFragmentActivity

在这个 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*

  1. mainActivity 我重写了 onResume 并做了以下操作

     if (!(mPagerAdapter == null)) {
    
             mPagerAdapter.notifyDataSetChanged();
    
    
         }
    
  2. 我在 mPagerAdapter 中覆盖 getItemPosition() 并使其返回 POSITION_NONE。

     @Override
         public int getItemPosition(Object object) {
    
             return POSITION_NONE;
         }
    

像魅力一样工作

关于android - 如何在 ViewPager : 中重新创建所有 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671695/

相关文章:

java - 带 ListView 的 Viewpager

java - 安卓viewpager : weird bug when adding/removing page

android - 在 native react 中,按钮文本未垂直居中对齐

java - OnTouchListener 没有被解雇

java - 宽度和高度为 match_parent 的 Recyclerview 返回固定大小错误

没有根点的android崩溃异常

Android获取 fragment 中的Tab位置

android - 带光标的 TextView

android - 约束布局 : change constraints programmatically

android - 从 Activity 更新 ViewPager 当前页面内 TextView 的文本