1

안녕하세요 저는 pseudoinfinite ViewPagerFragmentStatePagerAdapter으로 사용했습니다. 동적으로 CalendarFragment을 추가합니다.ViewPager 겹치기의 동적 내부 조각

CalendarFragment.java :

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) { 
    ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.calendar_fragment, container, false); 
    mCalendarView = (GridView) rootView.findViewById(R.id.calendar); 
    mUpdatedShiftsCont = (FrameLayout) rootView.findViewById(R.id.calendar_updated_shifts_container); 

    return rootView; 
} 

layout.calendar_fragment :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/calendar_fragment_id" 
    android:orientation="vertical" > 

    ... 

    <FrameLayout 
    android:paddingTop="30dp" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/calendar_updated_shifts_container" /> 

</LinearLayout> 

내가 추가하려고 내부 조각 나는 다른 내부 조각에 지점을 연결 무엇 멤버 변수 mUpdatedShiftsCont이 연결 지점,

모든 중첩 된 조각은 ViewPager에 하나 개의 상위 조각에 배치됩니다 :

는 사람이 어떻게이 문제를 해결하는 아이디어가 있습니까? 미리 감사드립니다.

+0

내부 조각을 추가하거나 바꾸시겠습니까? – santalu

+0

'ViewPager'에서 프래그먼트에 내부 프래그먼트를 추가하고 싶습니다. – skywall

+0

이것을 확인해보십시오. http://stackoverflow.com/questions/7723964/replace-fragment-inside-a-viewpager?rq=1 – santalu

답변

1

마침내 문제가있는 부분을 발견했습니다. ViewPager에 조각에 내부 조각을 추가 할 때 컨테이너 ID를 얻으려면 mUpdatedShiftsCont.getId() 메서드를 사용했습니다. 나는의 조각 '모든 ViewPager에서 ID가'용기를 인쇄하려고 할 때 나는이 결과를 얻을 : 동일한 ID를 가지고

Log.d("CF", "ID: " + String.valueOf(mUpdatedShiftsCont.getId())); 

09-27 23:14:05.154 8388-8388/cz.skywall.sichtovnik_v2 D/CF: ID: 2131492885 
09-27 23:14:05.170 8388-8388/cz.skywall.sichtovnik_v2 D/CF: ID: 2131492885 
09-27 23:14:05.193 8388-8388/cz.skywall.sichtovnik_v2 D/CF: ID: 2131492885 
09-27 23:14:05.225 8388-8388/cz.skywall.sichtovnik_v2 D/CF: ID: 2131492885 
09-27 23:14:05.256 8388-8388/cz.skywall.sichtovnik_v2 D/CF: ID: 2131492885 

그래서 다른 용기 (다른 조각 때문에). 솔루션 : 나는 새로운 아이디를 기반 OD 조각의 내용을 설정 한

mUpdatedShiftsCont.setId(1000 + mCurrentMonth + mCurrentYear); 
getFragmentManager().beginTransaction() 
    .add(1000 + mCurrentMonth + mCurrentYear, fragment).commit(); 

. 그들은 지금 유일하고 (아마) 내가 원하는대로 작동합니다.

+1

호출기에 유한 조각 수가 적은 경우 res/values ​​폴더에 ID를 정의하고이를 사용하여 고유성을 보장 할 수 있습니다. –

+0

감사합니다. 불행히도 저는 조각이 많이 있습니다. – skywall

+1

@skywall 내 문제를 해결해 주셔서 고마워요! 나는 4 조각 만 가지고 있기 때문에 @MH를 따른다. 'res/values ​​/ ids'에 ID를 정의하는 제안. – li2