Wang Jian
Wang Jian

Reputation: 341

How to Change AppCompatActivity to Fragment

I am a newbie at develop android app. My tab use fragment but i follow tutorial that use AppCompatActivity can not combine them. I want to learn how to change AppCompatActivity into Fragment.

There are my some code:

UserInfo.javaThis part should use 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);
    }

}

This is error occurred code:

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() has error. Error Message is:

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)

I really want to learn how to change to Fragment any tutorial or any help will be appreciated. thanks so much! And i will upload more details if needed.

Upvotes: 1

Views: 6567

Answers (1)

OneCricketeer
OneCricketeer

Reputation: 191728

You'll need to figure out how Butterknife works in Fragments, but I think you're close, you need this instead

class UserInfo extends Fragment 

(and make sure you import android.support.v4.app.Fragment)

Then, preferably move all code from onCreate into OnCreateView and restructure the code like so

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' 

Wherever you get an error with this, change it to getActivity(), and also getActivity().getResources()

Upvotes: 4

Related Questions