2016-09-24 52 views
3

我正在尝试创建由多个其他片段组成的片段。 首先,我有一个覆盖整个布局的片段,您可以使用PagerAdapter向左或向右滑动其他片段。 这些碎片中的每一个都将由其他碎片组成。目前它由一个textView,一个按钮和一个片段组成(将通过较小的调整重复该片段的重复)。片段只能在返回前一页时正常工作

在每个fullscreen-fragment上,我通过将它附加到TextView来显示我正在处于哪个页面。这工作。

我想动态添加较小的Fragment。这不起作用。 它可以在加载的第一页上工作,并且当你去回到前一页(只有确切的前一个)时,它似乎仍在工作,即使它在第一次打开页面时没有显示正方形。此行为在此显示: enter image description here

您可以看到文本显示片段编号。但蓝色方块应该在每一个片段。这里有什么可能是错的?

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()方法总是返回第一页中的对​​象?这是真的吗?

+1

爱GIF动画与文字说明一起展现的概率到底是什么。更多的问题应该是这样的话和可视化。 –

+1

一个有用的小东西就是将代码片段包装在类和方法中,就像编写代码时一样。 –

+1

为什么你有一个只迭代一次的for循环? –

回答

1

问题在于,ft.replace()用Code-Apprentice对原始问题的评论代替了它找到的第一个视图。

更改

FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); 

FragmentTransaction ft = getChildFragmentManager().beginTransaction(); 

似乎已经解决了这个问题!

解决方案来源:ViewPager with multiple fragment instances of same class