রিসাইকেলার ভিউয়ের মধ্যে ভিউপেজার ব্যবহার করার সময় আমি একটি বাজে ত্রুটির মুখোমুখি হয়েছি। ত্রুটির নীচে আমি একটি বিশেষ পরিস্থিতিতে পড়েছি। আমি একটি খণ্ড শুরু করেছি যার সাথে ভিউপ্যাজারের একটি পুনর্ব্যবহারযোগ্য ভিউ ছিল (ফ্রেগমেন্টস্টেটপেজারএডাপ্টার ব্যবহার করে)। আমি পুনর্ব্যবহারযোগ্য ভিউতে একটি সেলে ক্লিক করে বিভিন্ন টুকরোটিতে স্যুইচ না করা পর্যন্ত এটি ভালভাবে কাজ করেছিল এবং তারপরে ফোনের হার্ডওয়্যার ব্যাক বোতাম এবং অ্যাপ ক্র্যাশ ব্যবহার করে আবার নেভিগেট করেছি।
এবং মজার বিষয়টি হ'ল আমার একই রিসাইক্লারভিউতে দু'জন ভিউপেজার ছিল এবং দু'জনেরই প্রায় 5 টি কক্ষ দূরে ছিল (অন্যটি স্ক্রিনে দৃশ্যমান ছিল না, এটি ডাউন ছিল)। সুতরাং প্রথমদিকে আমি সলিউশনটি প্রথম ভিউপেজারে কেবল প্রয়োগ করেছি এবং অন্যটি যেমন রেখেছি (টুকরো ব্যবহার করে ভিউপাগার)।
ফিরে নেভিগেট করা ঠিক কাজ করেছিল, যখন প্রথম দর্শন পেজারটি দেখতে পেত। এখন যখন আমি দ্বিতীয়টিতে স্ক্রোল করে আবার টুকরা পরিবর্তন করেছি এবং ফিরে এসেছি, এটি ক্র্যাশ হয়ে গেছে (একই জিনিসটি প্রথমটির সাথে ঘটেছিল)। সুতরাং আমাকে উভয়ই ভিউপেজার পরিবর্তন করতে হয়েছিল।
যাইহোক, কাজের সমাধান খুঁজতে নীচে পড়ুন। ক্র্যাশ ত্রুটি নীচে:
java.lang.IllegalArgumentException: No view found for id 0x7f0c0098 (com.kk:id/pagerDetailAndTips) for fragment ProductDetailsAndTipsFragment{189bcbce #0 id=0x7f0c0098}
এটি ডিবাগিং ঘন্টা ব্যয়। নীচে অবধি এই সম্পূর্ণ থ্রেড পোস্টটি পড়ুন যা নিশ্চিত করেই আমি চাইল্ডফ্রেগমেন্টম্যানেজারটি পাশ করছি including
কিছুই কাজ হয়নি।
অবশেষে ফ্র্যাগমেন্টস্টেটপেজারএডাপ্টার ব্যবহার না করে আমি পেজারআডাপ্টারটি প্রসারিত করেছি এবং খণ্ডগুলি ব্যবহার না করে ভিউপ্যাজে এটি ব্যবহার করেছি। আমি বিশ্বাস করি কিছু যেখানে নেস্টেড টুকরা সহ একটি বিইউজি আছে। যাইহোক, আমাদের কাছে বিকল্প রয়েছে। পড়ুন ...
নীচের লিঙ্কটি খুব সহায়ক ছিল:
খণ্ডবিহীন ভিউপেজার
লিঙ্কটি মারা যেতে পারে তাই আমি এখানে আমার প্রয়োগিত সমাধানটি পোস্ট করছি:
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;
}
}
আশা করি এটি সহায়ক ছিল !!