Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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
Java getItem()在Android的ViewPager中是如何工作的?_Java_Android_Android Fragments - Fatal编程技术网

Java getItem()在Android的ViewPager中是如何工作的?

Java getItem()在Android的ViewPager中是如何工作的?,java,android,android-fragments,Java,Android,Android Fragments,我试图将在一个片段中单击的图像的位置传递给寻呼机片段活动,以便它显示在屏幕幻灯片中。我将意图中的位置传递给寻呼机,但是getItem()总是从相册中的第一个图像开始屏幕幻灯片,而不是从我单击的图像开始 在myImageListFragment中: public void onBindViewHolder(ViewHolder viewHolder, final int position) { final int imageResId = mImageResIds[positio

我试图将在一个片段中单击的图像的位置传递给寻呼机片段活动,以便它显示在屏幕幻灯片中。我将意图中的位置传递给寻呼机,但是getItem()总是从相册中的第一个图像开始屏幕幻灯片,而不是从我单击的图像开始

在my
ImageListFragment
中:

public void onBindViewHolder(ViewHolder viewHolder, final int position) {

        final int imageResId = mImageResIds[position];

        viewHolder.setData(imageResId);
        viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = FooPager.newIntent(getActivity(), position);
                startActivity (intent);
               // mListener.OnGalleryImageSelected(imageResId);
            }
        });
    }
然后在我的
Pager
FragmentActivity中:

public static final String EXTRA_IMAGE_ID = "meow";
        public static int id = 0;
        private ViewPager mViewPager;
        private Integer images [] = {
        R.drawable.a, R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e,
        R.drawable.f, R.drawable.g, R.drawable.h,R.drawable.i,R.drawable.j,
        R.drawable.k, R.drawable.l, R.drawable.m,R.drawable.n,R.drawable.o,
        R.drawable.p, R.drawable.q, R.drawable.r
};

public static Intent newIntent(Context packageContext, int id) {
    Intent intent = new Intent(packageContext,FooPager.class);
    intent.putExtra(EXTRA_IMAGE_ID,id);
    return intent;
}

@Override
protected void onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView(R.layout.activity_image_pager);
    mViewPager = (ViewPager) findViewById (R.id.activity_image_pager_view_pager);

    FragmentManager fragmentManager = getSupportFragmentManager ();
    mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager) {
        @Override
        public Fragment getItem(int position) {
            int id = images[position];
            return ImageDetailFragment.newInstance(id);
        }

        @Override
        public int getCount() {
            return images.length;
        }
    });
getItem()中的
position
始终从0开始,因此始终选择我的
/drawable
目录中的第一个图像。如何使getItem()中的位置与我在
ImageListFragment
中单击的图像的位置一致?此时,
getItem()
不知道该位置来自意图,但我不确定如何在不使
getItem()
反复显示相同图像(在屏幕幻灯片模式下)的情况下修复此问题

下面是更多的代码:


我认为问题在于,您在以下代码中每次单击都会启动一个新的活动:

viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    Intent intent = FooPager.newIntent(getActivity(), position);
    startActivity (intent);
    // mListener.OnGalleryImageSelected(imageResId);
    }
});
由于
活动
正在重新开始,因此所有内容都将重置。查看以获得更好、更标准的方法来处理您正在尝试的操作


要将数据从
片段
传递到
活动
:在
Pager
中构建
意图
,并将其传递到
FooPager活动
,如下所示:

传呼机

ImageListFragment

要在
FooPager
中拾取
EXTRA\u IMAGE\u ID
,请将以下代码添加到
FooPager
onCreate

Bundle extras = getIntent().getExtras();
id = extras.getInt(EXTRA_IMAGE_ID);

还应该对null
EXTRA
和缺少的
EXTRA\u IMAGE\u ID
进行一些额外的检查,但这是如何从
ImageListFragment
获取数据到
活动

,因此如何从ImageListFragment转到链接中描述的
FragmentStatePagerSupport
?(如果每次单击都创建一个新的意图会触发一个新的活动)。
Intent intent = FooPager.newIntent(getActivity(), position);
startActivity (intent);
Bundle extras = getIntent().getExtras();
id = extras.getInt(EXTRA_IMAGE_ID);