作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是开发 Android 应用程序的新手。我的选项卡使用 fragment ,但我遵循使用 AppCompatActivity 的教程无法将它们组合起来。我想学习如何将AppCompatActivity更改为Fragment。
这是我的一些代码:
UserInfo.java这部分应该使用 fragment 。
public class UserInfo extends AppCompatActivity{
@Bind(R.id.passport_type)
BetterSpinner spinner_passport;
public UserInfo() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_info);
ButterKnife.bind(this);
String[] list = getResources().getStringArray(R.array.passport_type);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, list);
spinner_passport.setAdapter(adapter);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.user_info, container, false);
}
}
这是发生错误的代码:
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new UserInfo(), "个人信息");
adapter.addFragment(new TwoFragment(), "健康信息");
adapter.addFragment(new ThreeFragment(), "个人证件");
viewPager.setAdapter(adapter);
}
new UserInfo() 有错误。错误消息是:
Wrong 1st argument type. Found: 'com.chinatown.wangjian.chinatown_userprofile.UserInfo', required: 'android.support.v4.app.Fragment' less...
addFragment
(android.support.v4.app.Fragment,
String)
in ViewPagerAdapter cannot be applied
to
(com.chinatown.wangjian.chinatown_userprofile.UserInfo,
String)
我真的很想学习如何更改为 Fragment 任何教程或任何帮助将不胜感激。非常感谢!如果需要,我会上传更多详细信息。
最佳答案
您需要弄清楚 Butterknife 在 Fragments 中的工作原理,但我认为您已经很接近了,您需要这个
class UserInfo extends Fragment
(并确保导入android.support.v4.app.Fragment
)
然后,最好将所有代码从 onCreate 移至 OnCreateView 并像这样重构代码
View v = inflater.inflate(R.layout.user_info, container, false);
// TODO: v.findViewById(R.id.passport_type)
// TODO: Set the adapter
return v; // this replaces 'setContentView'
无论何时出现 this
错误,请将其更改为 getActivity()
,以及 getActivity().getResources()
关于java - 如何将 AppCompatActivity 更改为 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37776201/
我是一名优秀的程序员,十分优秀!