我试图创建一个由多个其他片段组成的片段。 首先,我有一个覆盖整个布局的片段,您可以向左或向右滑动以使用PagerAdapter移动其他片段。 这些片段中的每一个都将由其他片段组成。目前它由一个textView,一个Button和一个Fragment组成(通过小调整将更多重复这个相同的片段)。
在每个全屏片段上,我通过将其附加到TextView来显示我所在的页面。这很有效。
我想动态添加较小的片段。这不起作用。 它适用于加载的第一页,当您返回上一页(仅限前一页)时,它似乎正常工作,即使它没有&#39 ; t首次打开页面时显示正方形。此行为在此处演示:
您可以看到文本显示片段编号。但蓝色正方形应该在每个片段上。这可能有什么问题?
片段的CreateView()方法:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_level_selector, container, false);
Bundle bundle=getArguments();
levelNumber=bundle.getInt("levelNumber");
textView = (TextView) view.findViewById(R.id.text);
textView.append(" " + levelNumber.toString());
String[] colors = {"#0000ff", "#00ff00", "#ff0000", "#ffff00"};
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.include1, PictureFragment.newInstance(1, "#0000ff" ));
ft.commit();
return view;
}
片段布局xml
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<FrameLayout
android:id="@+id/include1"
android:transitionName="pic1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:transitionName="pos1"
android:text="Hello, I am a Button"
android:onClick="sendMessage"/>
编辑:此行为仅在setOffscreenPageLimit(0)时出现。如果我将它设置得更高,只有第一个打开的页面有蓝色方块,其他所有页面都没有。对我来说,似乎getResources()。getIdentifier()方法总是从第一页返回对象?这可能是真的吗?
答案 0 :(得分:1)
问题在于ft.replace()用给定的id替换它找到的第一个视图,如Code-Apprentice所建议的那样对原始问题的评论。
更改
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
到
%
似乎解决了这个问题!
解决方案来自:ViewPager with multiple fragment instances of same class