Tôi đã gặp phải một lỗi khó chịu khi sử dụng Viewpager trong Recycler View. Lỗi dưới đây tôi phải đối mặt trong một tình huống đặc biệt. Tôi đã bắt đầu một đoạn có RecyclerView với Viewpager (sử dụng FragmentStatePagerAd CHƯƠNG). Nó hoạt động tốt cho đến khi tôi chuyển sang các đoạn khác nhau khi nhấp vào một ô trong RecyclerView, và sau đó điều hướng trở lại bằng nút Quay lại phần cứng của Điện thoại và Ứng dụng bị hỏng.
Và điều buồn cười về điều này là tôi đã có hai Viewpager trong cùng một RecyclerView và cả hai đều cách nhau khoảng 5 ô (cái khác không hiển thị trên màn hình, nó đã bị hỏng). Vì vậy, ban đầu tôi chỉ áp dụng Giải pháp cho Viewpager đầu tiên và để lại một cái khác như vậy (Viewpager sử dụng Fragment).
Điều hướng trở lại hoạt động tốt, khi xem máy nhắn tin đầu tiên có thể xem được. Bây giờ khi tôi cuộn xuống cái thứ hai và sau đó thay đổi mảnh vỡ và quay trở lại, nó đã bị hỏng (Điều tương tự đã xảy ra với cái đầu tiên). Vì vậy, tôi đã phải thay đổi cả Viewpager.
Dù sao, đọc dưới đây để tìm giải pháp làm việc. Lỗi tai nạn bên dưới:
java.lang.IllegalArgumentException: No view found for id 0x7f0c0098 (com.kk:id/pagerDetailAndTips) for fragment ProductDetailsAndTipsFragment{189bcbce #0 id=0x7f0c0098}
Đã dành hàng giờ để gỡ lỗi nó. Đọc bài viết hoàn chỉnh này cho đến tận cùng áp dụng tất cả các giải pháp bao gồm đảm bảo rằng tôi đang vượt qua childFragmentManager.
Không có gì làm việc.
Cuối cùng thay vì sử dụng FragmentStatePagerAdOG, tôi đã mở rộng PagerAd CHƯƠNG và sử dụng nó trong Viewpager mà không sử dụng các đoạn. Tôi tin rằng một số nơi có BUG với các mảnh được lồng vào nhau. Dù sao, chúng tôi có các lựa chọn. Đọc ...
Liên kết dưới đây rất hữu ích:
Viewpager không có mảnh vỡ
Liên kết có thể chết vì vậy tôi đang đăng Giải pháp đã triển khai của mình ở đây bên dưới:
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;
}
}
Hy vọng điều này là hữu ích !!