您好我是ViewPager
与FragmentStatePagerAdapter
的假无限CalendarFragment
。我动态地将mUpdatedShiftsCont
添加到其中。我有成员变量@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;
}
什么是连接指向另一个内部片段:
CalendarFragment.java:
<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>
layout.calendar_fragment:
getFragmentManager().beginTransaction()
.add(mUpdatedShiftsCont.getId(), fragment).commit();
当我尝试将内部片段添加到连接点时,
ViewPager
所有嵌套片段都放在{{1}}中的一个父片段中:
有谁知道如何解决这个问题?提前谢谢。
答案 0 :(得分:1)
我终于找到了问题所在。当我在ViewPager
中添加内部片段到片段时,我使用方法mUpdatedShiftsCont.getId()
来获取容器ID。当我尝试在所有ViewPager
的片段中打印容器的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
所以不同的容器(因为不同的片段)具有相同的ID。的解决方案:强>
mUpdatedShiftsCont.setId(1000 + mCurrentMonth + mCurrentYear);
getFragmentManager().beginTransaction()
.add(1000 + mCurrentMonth + mCurrentYear, fragment).commit();
我根据od片段的内容设置了新的ID。它们现在是独一无二的(可能),它可以按照我想要的方式工作。