我遇到了以下问题:
MainActivity
主要是ViewPager
我可以在卡片中滑动(Fragment
)。此卡具有占位符ViewGroup
,其中在运行时期间放置了另一个内容(Fragment
)。问题是内容只放在一张卡片中。
MainActivity
public class MainActivity extend FragmentActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// ...
// init ViewPager
getViewPager().setAdapter(new CardSelectionAdapter(getSupportFragmentManager()));
}
// ...
private class CardSelectionAdapter extends FragmentPagerAdapter {
// ...
public Fragment getItem(int position) {
return new CardFragment(someData);
}
}
}
CardFragment
public class CardFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.card, container, false);
rootView.findViewById(R.id.actionSheet).setVisibility(View.GONE);
return rootView;
}
public void populate() {
// ...
Fragment f;
switch (type) {
case TYPE_A: f = new ActionsAFragment(); break;
case TYPE_B: f = new ActionsBFragment(); break;
default: f = null;
}
if (f != null) {
// Here should be the main problem when adding Fragment to container/placeholder
getFragmentManager().beginTransaction().add(R.id.actionSheet, f).commit();
getView().findViewById(R.id.actionSheet).setVisibility(View.VISIBLE);
}
}
}
我认为因为所有卡都属于MainActivity
,FragmentTransaction
只能添加ViewGroup
id R.id.actionSheet
。
我是否有另外一种方法可以使用相同的ID向布局添加内容?
答案 0 :(得分:1)
我不知道你在哪里打populate
。您应该更改populate
以接受父视图(而不是每次都将片段添加到R.id.actionsheet)并从onCreateView
调用它并将其传递给您刚刚创建的视图。这样,您就可以在具有相同ID的actionSheet中查看多个视图。但是,缺少很多代码,我无法确定该怎么做。
顺便说一句,当您处理嵌套片段时 - 在populate
内部,您应该使用getChildFragmentManager()
而不是getFragmentManager()
。