Reputation: 341
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
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