जब मैं पुनर्नवीनीकरण दृश्य के भीतर Viewpager का उपयोग कर एक बुरा त्रुटि का सामना कर रहा था। नीचे एक विशेष स्थिति में त्रुटि का सामना करना पड़ा। मैंने एक टुकड़ा शुरू किया, जिसमें व्यूपेजर के साथ एक रीसायकलर (FragmentStatePagerAdapter का उपयोग करके) था। यह तब तक अच्छी तरह से काम करता रहा जब तक कि मैंने RecyclerView में एक सेल के क्लिक पर अलग-अलग टुकड़े में स्विच नहीं किया, और फिर फोन के हार्डवेयर बैक बटन का उपयोग करके वापस नेविगेट किया और ऐप क्रैश हो गया।
और इस बारे में मजेदार बात यह है कि मेरे पास एक ही RecyclerView में दो Viewpagers थे और दोनों लगभग 5 सेल दूर थे (अन्य स्क्रीन पर दिखाई नहीं दे रहा था, यह नीचे था)। इसलिए शुरू में मैंने सिर्फ पहले Viewpager पर समाधान लागू किया और अन्य को छोड़ दिया जैसा कि यह है (Viewpager Fragments का उपयोग करके)।
जब पहली बार पेजर देखा जा सके, तो नेविगेट करने में ठीक काम हुआ। अब जब मैं नीचे दूसरी तरफ स्क्रॉल किया और फिर टुकड़ा बदल दिया और वापस आ गया, यह दुर्घटनाग्रस्त हो गया (एक ही चीज़ पहले एक के साथ हुई)। इसलिए मुझे दोनों Viewpagers को बदलना पड़ा।
वैसे भी, कार्यशील समाधान खोजने के लिए नीचे पढ़ें। नीचे क्रैश त्रुटि:
java.lang.IllegalArgumentException: No view found for id 0x7f0c0098 (com.kk:id/pagerDetailAndTips) for fragment ProductDetailsAndTipsFragment{189bcbce #0 id=0x7f0c0098}
इसे डिबेट करते हुए कई घंटे बीत गए। इस पूरी थ्रेड पोस्ट को नीचे तक पढ़ें, जिसमें यह सुनिश्चित करना शामिल है कि मैं चाइल्डफ्रैगमेंट मैनजर पास कर रहा हूं।
कुछ भी काम नहीं किया।
अंत में FragmentStatePagerAdapter का उपयोग करने के बजाय, मैंने PagerAdapter को बढ़ाया और टुकड़ों के उपयोग के बिना 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;
}
}
आशा है कि यह उपयोगी था !!