如何将 AppCompatActivity 更改为 Fragment

How to Change AppCompatActivity to Fragment

我是开发 android 应用程序的新手。我的选项卡使用片段,但我遵循使用 AppCompatActivity 的教程无法组合它们。我想学习如何将 AppCompatActivity 更改为 Fragment。

有我的一些代码:

UserInfo.java这部分应该使用片段。

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()