Recycler View에서 Viewpager를 사용할 때 Nasty 오류가 발생했습니다. 오류가 발생하면 특별한 상황에 직면했습니다. Viewpager와 함께 RecyclerView가있는 조각을 시작했습니다 (FragmentStatePagerAdapter 사용). RecyclerView에서 셀을 클릭 할 때 다른 조각으로 전환 한 다음 전화의 하드웨어 뒤로 버튼을 사용하여 다시 탐색하고 앱이 다운 될 때까지 잘 작동했습니다.
그리고 이것에 대해 재미있는 점은 동일한 RecyclerView에 두 개의 Viewpager가 있고 둘 다 약 5 셀 떨어져 있다는 것입니다 (다른 화면에서는 보이지 않았고 다운되었습니다). 그래서 처음에는 방금 첫 번째 Viewpager에 솔루션을 적용하고 그대로 다른 조각을 남겼습니다 (Fragments를 사용하는 Viewpager).
첫 번째보기 호출기를 볼 수 있었을 때 탐색 기능이 정상적으로 작동했습니다. 이제 두 번째 스크롤로 스크롤 한 다음 조각을 변경하고 다시 돌아 왔을 때 충돌이 발생했습니다 (첫 번째 것과 동일한 일이 발생했습니다). 그래서 두 Viewpagers를 모두 변경해야했습니다.
어쨌든 작동 솔루션을 찾으려면 아래를 읽으십시오. 아래의 충돌 오류 :
java.lang.IllegalArgumentException: No view found for id 0x7f0c0098 (com.kk:id/pagerDetailAndTips) for fragment ProductDetailsAndTipsFragment{189bcbce #0 id=0x7f0c0098}
디버깅하는 데 몇 시간이 걸렸습니다. childFragmentManager를 전달하는지 확인하는 것을 포함하여 모든 솔루션을 적용 할 때 까지이 전체 스레드 게시물을 읽으십시오.
아무것도 효과가 없었습니다.
마지막으로 FragmentStatePagerAdapter를 사용하는 대신 PagerAdapter를 확장하고 조각을 사용하지 않고 Viewpager에서 사용했습니다. 중첩 된 조각이있는 버그가있는 곳이 있다고 생각합니다. 어쨌든, 우리는 옵션이 있습니다. 읽다 ...
아래 링크는 매우 도움이되었습니다.
조각없는 Viewpager
링크가 종료되어 구현 된 솔루션을 아래에 게시하고 있습니다.
public class ScreenSlidePagerAdapter extends PagerAdapter {
private static final String TAG = "ScreenSlidePager";
ProductDetails productDetails;
ImageView imgProductImage;
ArrayList<Imagelist> imagelists;
Context mContext;
// Constructor
public ScreenSlidePagerAdapter(Context mContext,ProductDetails productDetails) {
//super(fm);
this.mContext = mContext;
this.productDetails = productDetails;
}
// Here is where you inflate your View and instantiate each View and set their values
@Override
public Object instantiateItem(ViewGroup container, int position) {
LayoutInflater inflater = LayoutInflater.from(mContext);
ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.product_image_slide_cell,container,false);
imgProductImage = (ImageView) layout.findViewById(R.id.imgSlidingProductImage);
String url = null;
if (imagelists != null) {
url = imagelists.get(position).getImage();
}
// This is UniversalImageLoader Image downloader method to download and set Image onto Imageview
ImageLoader.getInstance().displayImage(url, imgProductImage, Kk.options);
// Finally add view to Viewgroup. Same as where we return our fragment in FragmentStatePagerAdapter
container.addView(layout);
return layout;
}
// Write as it is. I don't know much about it
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
/*super.destroyItem(container, position, object);*/
}
// Get the count
@Override
public int getCount() {
int size = 0;
if (productDetails != null) {
imagelists = productDetails.getImagelist();
if (imagelists != null) {
size = imagelists.size();
}
}
Log.d(TAG,"Adapter Size = "+size);
return size;
}
// Write as it is. I don't know much about it
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
이것이 도움이 되었기를 바랍니다!