Java 包含片段的返回类
我想覆盖公共函数getItem(int位置): tab1内容如下所示:Java 包含片段的返回类,java,android,fragment,Java,Android,Fragment,我想覆盖公共函数getItem(int位置): tab1内容如下所示: public class Tab1Content extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.t
public class Tab1Content extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab1_content, container, false);
return rootView;
}
}
@Override public Fragment getItem(int position) {
switch (position) {
case 0:
return TestFragment.newInstance(1);
case 1:
return TestFragment1.newInstance(2);
case 2:
return TestFragment2.newInstance(3);
}
return null;
}
但Android Studio在日志中抛出错误:
Error:(141, 28) error: incompatible types: Tab1Content cannot be converted to Fragment
我做错了什么?您的片段应该扩展了
android.support.v4.fragment
除此之外,应该在片段中使用空构造函数
如果要在片段中传递某些数据,也可以使用newInstance方法:
片段:
public static TestFragment newInstance(int type) {
TestFragment f = new TestFragment();
Bundle b = new Bundle();
b.putInt("type", type);
f.setArguments(b);
return f;
}
您的getItem
如下所示:
public class Tab1Content extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab1_content, container, false);
return rootView;
}
}
@Override public Fragment getItem(int position) {
switch (position) {
case 0:
return TestFragment.newInstance(1);
case 1:
return TestFragment1.newInstance(2);
case 2:
return TestFragment2.newInstance(3);
}
return null;
}
TestFragment1
和TestFragment2
类似于您的TestFragment
在适配器的导入行下方添加:import android.support.v4.app.Fragment;导入android.support.v4.app.FragmentManager;导入android.support.v4.app.FragmentPagerAdapter代码>并在片段类中添加以下导入:导入android.support.v4.app.Fragment代码>