ViewPager中显示的第一个片段是我创建的第二个片段

用户名

我有对象列表Offer,并使用它们的数据尝试填充片段(每个片段一个对象)。它以显示它们的方式工作,但是显示的第一个实际上是第二个,在我向左滑动两次并回到第一个之后,它在那里(第一个)

我知道这个问题与此有关

所显示的ViewPager第一个片段始终与FragmentStatePager错误

但是问题是自我回答的,不是很容易理解,所以我真的需要帮助

这是我的代码:Fragment内部活动

    public class OffersDisplay extends FragmentActivity {
             /*some inicializations for layout and stuff*/

             listOfOffers = (ArrayList<Offer>) getIntent().getSerializableExtra("listOfOffers");
 ...
          public static class MyAdapter extends FragmentStatePagerAdapter {
        public MyAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);

        }

        @Override
        public int getCount() {
            return ITEMS;
        }

        @Override
        public Fragment getItem(int position) {
            return ImageFragment.init(listOfOffers.get(position));
        }

    }
}

我的ImageFragment类是单独的,看起来像这样

    public  class ImageFragment extends Fragment {
    //some inits again
        public static  ImageFragment init(Offer offer) {

            // Supply val input as an argument.
            name = offer.getName();
            description = offer.getDescription();
            moreInfoURL = offer.getMoreInfoURL();
     return new ImageFragment();
       }

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
         layoutView = inflater.inflate(R.layout.fragment_image, container,
                 false);
        tv = layoutView.findViewById(R.id.text);
        ((TextView) tv).setText(name + "\n"+ description);
        iview = layoutView.findViewById(R.id.image);

            //...some inits
        ((ImageView) iview).setImageBitmap(pic);

        return layoutView ;
    }

}

莉妮萨克斯

我已经解决了这个问题。它被破坏的原因是由于某种原因(我不知道),您无法在它的init或factory方法中初始化Fragment(例如,您的ImageFRagment)所需的值,并期望稍后在创建视图以保留时使用它订单到位。您必须通过arguments(bundle)将值作为片段的参数提供。因此,如果启动分页器时适配器有4个页面,其内容分别为A,B,C,D,则将为element [0]即调用onCreateView和onCreate。答:就我而言,我总是得到B,B,C,D,然后向后滑动D,C,B,A。

因此,要修复您的代码,请执行以下操作:公共静态ImageFragment init(提供){

    ImageFragment fragment = new ImageFragment();
    Bundle args = new Bundle();


    String name = offer.getName();
    String description = offer.getDescription();

    args.putString(ARG_NAME, name);
    args.putString(ARG_CONTENT, description);


    fragment.setArguments(args);

    return fragment; }

然后必须在onCreate()上使用以下参数初始化视图所需的值:

 mName = getArguments().getInt(ARG_NAME);
 content = getArguments().getString(ARG_CONTENT);

在您的onCreateView()中,您可以使用辅助函数来访问这些值以检索它们。

((TextView) rootView.findViewById(android.R.id.text1)).setText(getContent()); ((TextView) rootView.findViewById(R.id.article_content)).setText(getPageNumber());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ViewPager第二个片段为空白

即使处理了第二个片段,第一个片段也是可见的

为什么我的F#异步代码的第二个片段起作用,而第一个不起作用?

从第一个结果集中创建第二个SQL视图

WIX React Native Navigation:堆栈中的第二个屏幕显示在第一个屏幕上方

当我旋转第二个片段时,它会回到第一个片段

水平显示第二个输出,垂直显示第一个输出

为什么在调用第一个片段时会自动调用第二个片段?

如何将字符串拆分为2个单词的不同片段,其中第二个片段的第一个单词重复第一个单词的最后一个单词

JavaScript从第一个事件创建第二个事件

根据一个活动中包含的第二个片段发送的数据来更改片段中的数据

第一个抖动图像显示,但第二个不显示

在第二个循环中未显示第一个滑块图像

ViewPager上的实例第二个片段出错

根据第一个创建第二个array_rand

当我单击第一个片段中的特定数据(位置)时,我想导航到第二个片段并在地图和数据上显示标记

第一个代码片段与第二个和第三个代码输出不同的可能原因是什么?

第一个和第二个片段显示相同的数据

ViewPager的第二个片段尚未实例化

隐藏第一个按钮点击显示第二个,隐藏第二个点击显示第一个按钮

如何通过单击第一个表单中的按钮在第二个 TabPage 中创建 DataGridView

iTextPDF - 生成的第二个 PDF 文件显示第一个生成的 PDF 文件中的文本

即使在处理第二个片段之后,第一个片段仍然可见

JavaFX 在第一个窗口之后显示第二个窗口

根据第一个下拉列表中的选择显示第二个下拉列表?

在第一个元素前面显示第二个 <span> 元素

为什么第一个模式中的 body 显示在第二个模式中?

为什么我的第二个块坚持第一个?

为什么在交易到第二个片段横向模式后再次显示我的第一个交易?