android - नेस्टेड टुकड़े getchildfragmentmanager दुर्घटना के कारण




android-fragments android-viewpager (2)

मेरे पास व्यूपैज़र है जिसमें टुकड़े शामिल होते हैं, इनमें से प्रत्येक टुकड़ा छवियां और बैनर प्रदर्शित करने के लिए व्यू पेगर है I

अब प्रत्येक टुकड़ा छवि एडाप्टर के लिए मैं नीचे के रूप में GetChildFragmentManager () गुजर रहा हूँ

CarouselAdapter carouselAdapter = new CarouselAdapter(getChildFragmentManager());

लेकिन उपरोक्त कोड दुर्घटना का कारण है, जबकि निम्न संदेश दिखाते हुए दृश्यपेज टैब बदलते हैं

java.lang.IllegalArgumentException: No view found for id 0x7f1000ef 

लेकिन अगर मैं GetRragmentManager () पास करता हूं तो यह दुर्घटनाग्रस्त नहीं हो रहा है, लेकिन एडेप्टर कुछ समय के लिए किसी भी आइडिया को रिक्त हो जाता है कि कैसे नेस्टेड टुकड़े

मैं दोनों व्यू पेपर के लिए फ्रैग्मेंटपेगर एडेप्टर का उपयोग कर रहा हूं, लेकिन फिर भी यह काम नहीं कर रहा है

निम्नलिखित क्रैशलॉग है

 java.lang.IllegalArgumentException: No view found for id 0x7f1000ef (com.packagename:id/viewPagerBanners) for fragment MainBannerFragmentNew{308cb84 #0 id=0x7f1000ef android:switcher:2131755247:0}
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1292)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1523)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1585)
                                                                         at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2832)
                                                                         at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:2199)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1323)
                                                                         at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323)
                                                                         at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136)
                                                                         at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092)
                                                                         at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1969)
                                                                         at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:620)
                                                                         at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)
                                                                         at android.support.v4.view.ViewPager.populate(ViewPager.java:1268)
                                                                         at android.support.v4.view.ViewPager.populate(ViewPager.java:1116)
                                                                         at android.support.v4.view.ViewPager$3.run(ViewPager.java:273)
                                                                         at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                                                                         at android.view.Choreographer.doCallbacks(Choreographer.java:670)
                                                                         at android.view.Choreographer.doFrame(Choreographer.java:603)
                                                                         at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
                                                                         at android.os.Handler.handleCallback(Handler.java:746)
                                                                         at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                         at android.os.Looper.loop(Looper.java:148)
                                                                         at android.app.ActivityThread.main(ActivityThread.java:5443)
                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

निम्नलिखित हिंडोला एडाप्टर कोड है

public class CarouselAdapter extends FragmentPagerAdapter {

private List<CarouselItem> carouselItemsList;

public CarouselAdapter(FragmentManager fm, List<CarouselItem> carouselItemsList) {
    super(fm);
    this.carouselItemsList = carouselItemsList;

}

@Override
public Fragment getItem(int position) {
    return MainBannerFragmentNew.newInstance(R.drawable.gray_logo, carouselItemsList.get(position));
}

@Override
public int getCount() {
    return carouselItemsList.size();
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    super.destroyItem(container, position, object);
}
}

निम्नलिखित टैब एडेप्टर कोड फिसलने है I

public class HomeTabsPagerAdapter extends FragmentPagerAdapter {
ArrayList<HomeTabItem> homeTabItems;

public HomeTabsPagerAdapter(FragmentManager manager, ArrayList<HomeTabItem> homeTabItems) {
    super(manager);
    this.homeTabItems = homeTabItems;
}

@Override
public Fragment getItem(int position) {
    HomeTabItem homeTabItem = homeTabItems.get(position);
    return OfferZoneFragment.newInstance(homeTabItem.getId());

}

@Override
public int getCount() {
    return homeTabItems.size();
}

@Override
public CharSequence getPageTitle(int position) {
    return homeTabItems.get(position).getTitle();
}
}

हर स्लाइडिंग टैब के टुकड़े में रीसाइक्वेव्यूव्यू होता है, इस रीसीलर्व्यू में कैरोसेल व्यू-पेयर में निम्नलिखित शामिल है जो कि बाइंडव्यू में कोड है

((BannerHolder) holder).viewPager.setAdapter(new CarouselAdapter(fragmentManager, homePageItems.get(position).carouselItems));
                ((BannerHolder) holder).circlePageIndicator.setViewPager(((BannerHolder) holder).viewPager);
                final float density = context.getResources().getDisplayMetrics().density;
                ((BannerHolder) holder).circlePageIndicator.setBackgroundColor(0x00000000);
                ((BannerHolder) holder).circlePageIndicator.setRadius(5 * density);
                ((BannerHolder) holder).circlePageIndicator.setFillColor(ContextCompat.getColor(context, R.color.appthemecolor));
                ((BannerHolder) holder).circlePageIndicator.setPageColor(0xFFFFFFFF);
                ((BannerHolder) holder).circlePageIndicator.setStrokeColor(0x00000000);
                ((BannerHolder) holder).circlePageIndicator.setStrokeWidth(2 * density);
                if (((BannerHolder) holder).viewPager.getAdapter().getCount() <= 1) {
                    ((BannerHolder) holder).circlePageIndicator.setVisibility(View.GONE);
                } else {
                    ((BannerHolder) holder).circlePageIndicator.setVisibility(View.VISIBLE);
                }

फ्रेगमेंटस्टेपैपर एडाप्टर द्वारा फ़्रेग्मेंट पेपर एडाप्टर को मेरे लिए बच्चे और पैरेंट ट्रिगमेंट दोनों के लिए हल किया गया।


आप नेस्टेड टुकड़ों के लिए getChildFragmentManager का प्रयोग कर रहे हैं जो सही है।

तुम क्या कर रहे हो:

आपके मामले में जब टुकड़े (बाल) के दृश्यपेज से जुड़ा होना चाहता है, लेकिन यहां व्यूअर अपने माता-पिता (अभी भी अलग) से जुड़ा नहीं है।

तुम्हे क्या करना चाहिए:

एक कस्टम onAttachedToWindow - onAttachedToWindow बनाएँ इसकी onAttachedToWindow ओवरराइड करें और आलसी सेट एडेप्टर करें।

अधिक विवरण के लिए, IllegalArgumentException पर एक नजर है : खंड के आईडी के लिए कोई दृश्य नहीं मिला - ViewPager में ViewPager

अद्यतन करें:

अगर आप getFragmentManager getSupportFragmentManager से android.support.v4.app.FragmentPagerAdapter से अपने getSupportFragmentManager के मूल वर्ग को बदलने की तुलना में getFragmentManager या getSupportFragmentManager का उपयोग करना चाहते हैं।





android-nested-fragment