6

의 원인이 getchildfragmentmanager중첩 조각 나는이 조각의 각 이미지를 표시 할 viewpager가 조각 및 배너 내가 아래로 getChildFragmentManager()를 통과하고 각 조각의 이미지 어댑터 지금 <p></p>을 포함 viewPager가 충돌

CarouselAdapter carouselAdapter = new CarouselAdapter(getChildFragmentManager()); 

위의 코드는 다음 메시지를 표시하는 뷰 페이지 탭을 변경하는 동안 크래시가 발생합니다.

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

하지만 getFragmentMana ger()는 충돌하지 않지만 어댑터는 잠시 동안 아무 것도 모호하게됩니다. 아이디어 중첩 된 조각을 처리하는 방법. 나는 두 viewpagers에 대한 FragmentPagerAdapter를 사용하고 있지만, 여전히 다음

작동하지 자사의

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); 
} 
} 

crashlog입니다

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(); 
} 
} 
,691,363,210

모든 슬라이드 탭 단편이 recylerview은 다음 viewpager 회전식 포함 recyclerview 보유하면 정확한 중첩 단편에 대한 getChildFragmentManager을 사용의 Bindview

의 코드
((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); 
       } 
+0

getChildFragmentManager()를 사용하는 것이 올바른 방법입니다. 왜 당신의 경우에는 작동하지 않는지 모르겠다. 다른 것들이 옳은지 확인하십시오. – Pruthviraj

+0

은 (는) 귀하가 만든 'CarouselAdapter'이거나 어떤 라이브러리에서 빌린 것입니까? – Nilabja

+0

충돌을 일으키고 완전한 충돌 로그를 생성하는 코드를 제공하십시오. –

답변

6

이다. 뭐

: 귀하의 경우

조각이 (아이의) viewpager에 부착 할 수 있지만, 여기에 viewpager가 부모에 연결되어 있지 원 (여전히 분리).

당신은 어떻게해야하나요 :

는 사용자가 onAttachedToWindow을 무시하고 게으른 세트 어댑터를 할 ViewPager 만듭니다.

자세한 내용은 IllegalArgumentException: No view found for id for fragment — ViewPager in ViewPager을 참조하십시오.

업데이트 : 사용 getFragmentManager 또는 getSupportFragmentManager보다 android.support.v4.app.FragmentStatePagerAdapterandroid.support.v4.app.FragmentPagerAdapter에서 PagerAdapter의 부모 클래스를 변경하려면

.

+0

동일하지만 여전히 같은 오류가 발생하고 있습니다 – Erum

0

FragmentPagerAdapter를 FragmentStatePagerAdapter로 대체하여 하위 및 상위 조각 문제를 해결했습니다.

+0

답변이 이미 주어진 답변과 일치합니다. 당신은 누군가의 것을 바탕으로 자신의 대답을 추가하기보다는 그것을 받아 들여야합니다. –

+0

괜찮습니까? – apk