【发布时间】:2015-08-21 13:42:45
【问题描述】:
我有一个以这种方式创建片段的适配器:
public class FooAdapter<T extends Fragment> extends FragmentPagerAdapter {
private Class<T> c;
public FooAdapter(FragmentManager fm,Class<T> c) {
super(fm);
this.c = c;
}
@Override
public Fragment getItem(int position) {
try {
T fragment = c.newInstance();
return fragment;
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
}
适配器的实例化:
new FooAdapter<BarFragment>(getSupportFragmentManager(),BarFragment.class)
我在 BarFragment 的 onCreate(and onAttach,onCreateView) 中添加了日志,但没有任何记录!
public class BarFragment extends Fragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "on create view");
}
}
【问题讨论】:
-
您是否将适配器分配给 viewpager?
-
@zec 是的,我已经分配了。
-
getItem()和getCount()都需要被覆盖。那么您是否计划每个片段仅使用 1 个适配器/viewpager? -
是的,我已经覆盖了它们。
-
我建议在你的适配器中放置跟踪语句,看看为什么你的片段没有被创建。
Class<T>看起来很可疑,但这只是因为我从未使用过它。除此之外,它似乎应该可以工作。
标签: java android generics android-fragments android-adapter