【发布时间】:2021-04-18 12:41:32
【问题描述】:
我有一个 ViewPager2,有两页。一个是获取电子邮件,另一个是获取电话号码。为了获得值,我向适配器添加了两个 get 方法,但我不确定这是正确且最安全的方法。这是我的代码:
public class PhoneEmailFragment extends Fragment {
private View view;
private final String[] tabs = {"Phone", "Email"};
private User user;
private int pageSelected = 0;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_phone_email, container, false);
return view;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
assert getArguments() != null;
user = getArguments().getParcelable("user");
}
@Override
public void onStart() {
super.onStart();
viewpagerSetup();
}
private void viewpagerSetup() {
TabLayout tabLayout = view.findViewById(R.id.register_phone_email_tab);
ViewPager2 viewPager2 = view.findViewById(R.id.register_viewpager);
SwipeAdapter adapter = new SwipeAdapter(this);
viewPager2.setAdapter(adapter);
viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
pageSelected = position;
}
});
new TabLayoutMediator(
tabLayout,
viewPager2,
(tab, position) -> tab.setText(tabs[position])
).attach();
}
public void saveValue() {
switch (pageSelected) {
case 0:
user.setUserPhoneNumber();
break;
case 1:
user.setUserEmail();
break;
}
}
static class SwipeAdapter extends FragmentStateAdapter {
public SwipeAdapter(@NonNull Fragment fragment) {
super(fragment);
}
@NonNull
@Override
public Fragment createFragment(int position) {
Fragment fragment = new Fragment();
switch (position) {
case 0:
fragment = new PhoneFieldFragment();
break;
case 1:
fragment = new EmailFieldFragment();
break;
}
return fragment;
}
@Override
public int getItemCount() {
return 2;
}
}
}
我想在 saveValue() 方法上使用 EditText 中的值。
【问题讨论】:
标签: android android-fragments android-viewpager2