我面临以下问题:
MainActivity
主要是ViewPager
我可以在其中滑动卡片(Fragment
)的地方。该卡具有占位符ViewGroup
,Fragment
在运行时在其中放置了其他内容()。问题在于内容仅放置在一张卡中。
主要活动
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);
}
}
}
卡片段
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的内容添加到布局中吗?
我看不到你要去哪里populate
。您应该更改populate
为接受父视图(而不是每次都将片段添加到R.id.actionsheet中)并从中调用它onCreateView
并将其传递给刚创建的视图。这样,您就不会在具有相同ID的actionSheet中使用多个视图时遇到问题。但是,有太多代码丢失了,我不确定在这里做什么。
顺便说一句,当处理嵌套的片段-时populate
,应使用getChildFragmentManager()
代替getFragmentManager()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句