Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ViewPager中显示的第一个片段是我创建的第二个片段_Android_Android Fragments_Android Viewpager - Fatal编程技术网

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

Android ViewPager中显示的第一个片段是我创建的第二个片段,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我有一个对象列表,我尝试用它们的数据填充片段(每个片段一个对象)。它的工作方式是显示它们,但显示的第一个实际上是第二个,在我向左滑动两次并返回到第一个之后,它就在那里了(第一个) 我知道这个问题和这个有关 但是这个问题是我自己回答的,不容易理解,所以我真的需要帮助 这是我的代码: 内片段活性 public class OffersDisplay extends FragmentActivity { /*some inicializations for layo

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

我知道这个问题和这个有关

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

这是我的代码: 内片段活性

    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));
        }

    }
}

}我已经解决了这个问题。它被破坏的原因是,由于某种原因(我不清楚),您无法在片段的init或factory方法中初始化片段(例如,您的示例中的ImageFRagment)所需的值,并期望在稍后创建视图时使用它以保持顺序。必须通过参数(bundle)将值作为参数提供给片段。因此,当您启动寻呼机时,如果适配器有4个包含内容A、B、C、D的页面,那么将为元素[0]即A调用onCreateView和onCreate。在我的情况下,我总是得到B、B、C、D,然后刷回D、C、B、A

所以要修正你的代码 `公共静态ImageFragment初始化(提供){

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

 mName = getArguments().getInt(ARG_NAME);
 content = getArguments().getString(ARG_CONTENT);
在onCreateView()中,可以使用帮助器函数来检索这些值

((TextView)rootView.findviewbyd(android.R.id.text1)).setText(getContent());

((TextView)rootView.findviewbyd(R.id.article_content)).setText(getPageNumber())

任何人都有任何见解吗?我也面临着同样的问题,关于FragmentStatePagerAdapter和Viewpager。请帮助。链接问题的建议解决方案不起作用。我尝试了简单的字符串数组a、b、c、d,我得到了b、b、c、d页,并从c或d向后滑动,->c、b、a或d、c、b、a。第一个元素的oncreateView/onCreate()从来没有人打过电话
    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; }
 mName = getArguments().getInt(ARG_NAME);
 content = getArguments().getString(ARG_CONTENT);