Java 使用泛型类型的片段实例化,OnCreate方法不';不打电话
我有一个适配器,它以这种方式创建片段:Java 使用泛型类型的片段实例化,OnCreate方法不';不打电话,java,android,generics,android-fragments,android-adapter,Java,Android,Generics,Android Fragments,Android Adapter,我有一个适配器,它以这种方式创建片段: 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 pub
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;
}
}
首先,您的onCreate方法是错误的,您应该使用onCreateView方法并忘记onCreate 大概是这样的:
public class BarFragment extends Fragment{
public BarFragment(){
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(LAYOUT YOU WANT TO INFLATE, container, false);
return rootView;
}
}
我现在将更深入地研究您的适配器代码。您是否将适配器分配给了viewpager?@zec是的,我已经分配了。
getItem()
&getCount()
都需要过度使用。那么,您是否计划每个片段只使用一个适配器/viewpager?是的,我已经覆盖了这两个。我建议将跟踪语句放置在适配器中,看看为什么不创建片段<代码>类看起来可疑,但这只是因为我从未使用过它。除此之外,它似乎应该可以工作。lol这没有错,因为他们只有一个log语句,我很确定这只是一个代码片段。如果BarFragment是在扩展FragmentActivity,那将是正确的方法。因为它是对片段的扩展,所以应该使用onCreateView方法。来源:好了,朋友-
public class BarFragment extends Fragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "on create view");
}
}
public class BarFragment extends Fragment{
public BarFragment(){
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(LAYOUT YOU WANT TO INFLATE, container, false);
return rootView;
}
}