Java getItem()在Android的ViewPager中是如何工作的?
我试图将在一个片段中单击的图像的位置传递给寻呼机片段活动,以便它显示在屏幕幻灯片中。我将意图中的位置传递给寻呼机,但是getItem()总是从相册中的第一个图像开始屏幕幻灯片,而不是从我单击的图像开始 在myJava 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
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);