java– 从单个按钮中提取多个片段的数据

java– 从单个按钮中提取多个片段的数据,第1张

概述我正在制作一个联系方式.它有三个片段,scrollview,它有编辑文本.此外,活动在菜单项中有一个保存按钮.我想通过单个保存按钮保存所有三个片段的数据.我的UI看起来像这样 如何从所有三个片段中提取数据到我的容器活动中.这是我在容器活动中保存菜单项的代码@Overridepubli

我正在制作一个联系方式.它有三个片段,scrollvIEw,它有编辑文本.此外,活动在菜单项中有一个保存按钮.我想通过单个保存按钮保存所有三个片段的数据.我的UI看起来像这样

 

如何从所有三个片段中提取数据到我的容器活动中.

这是我在容器活动中保存菜单项的代码

@H_404_11@    @OverrIDepublic boolean onoptionsItemSelected(MenuItem item) {    switch (item.getItemID()){        case R.ID.discard :            break;        case R.ID.save:            Personal_Details p1 = new Personal_Details();            Proffesional_Details p2 = new Proffesional_Details();            Social s = new Social();            Person p = new Person(p1.getname(),p1.getLastname(),p1.getPhone(),p1.getEmail(),p1.getdob(),                    p2.getCname(),p2.getTitle(),p2.getIM(),p2.getwebsite(),p2.getofficeA(),                    s.getNickname(),s.getIntro(),s.getFb(),s.getTwitter(),s.getInsta());            dbHelper Database = new dbHelper(this,null,null,1);            Database.addPerson(p);            break;    }    return true;}}

这是我在三个相同片段之一PERSONAL_DETAILS中的代码:

@H_404_11@public class Personal_Details extends Fragment {EditText name, lastname, phoneNumber,email,dob;public Personal_Details() {    // required empty public constructor}@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,                         Bundle savedInstanceState) {    // Inflate the layout for this fragment    return inflater.inflate(R.layout.fragment_personal__details, container, false);}@OverrIDepublic voID onActivityCreated(Bundle savedInstanceState) {    super.onActivityCreated(savedInstanceState);    initialize();}private voID initialize() {    name= (EditText)getActivity().findVIEwByID(R.ID.name);    lastname= (EditText)getActivity().findVIEwByID(R.ID.lastname);    phoneNumber= (EditText)getActivity().findVIEwByID(R.ID.phoneNumber);    email= (EditText)getActivity().findVIEwByID(R.ID.emailAddress);    dob= (EditText)getActivity().findVIEwByID(R.ID.dob);}public String getname(){    if(name.getText().toString()!=null)        return name.getText().toString();    else        return "";}public String getLastname(){    if(lastname.getText().toString()!=null)        return lastname.getText().toString();    else        return "";}public String getEmail(){    if(email.getText().toString()!=null)        return email.getText().toString();    else        return "";}public String getPhone(){    if(phoneNumber.getText().toString()!=null)        return phoneNumber.getText().toString();    else        return "";}public String getdob(){    if(dob.getText().toString()!=null)        return dob.getText().toString();    else        return "";}}

如何通过保存按钮将这些片段中的信息保存到“我的容器活动”?

编辑:这是我的滚动视图适配器

`class MyAdapter扩展FragmentStatePagerAdapter {

@H_404_11@public MyAdapter(FragmentManager fm) {    super(fm);}@OverrIDepublic Fragment getItem(int position) {    Fragment fragment = null;    switch (position){        case 0:            fragment = new Personal_Details();            break;        case 1:            fragment = new Proffesional_Details();            break;        case 2 :            fragment = new Social();            break;        default:break;    }    return fragment;}@OverrIDepublic int getCount() {    return 3;}@OverrIDepublic CharSequence getPageTitle(int position) {    switch (position){        case 0 : return "Personal";        case 1 : return "Professional";        case 2 : return "Social";        default:return null ;    }}

}`

解决方法:

您可以从FragmentStatePagerAdapter获取所有片段,并从中调用getter方法.您可以在instantiateItem方法中保存FragmentStatePagerAdapter中Fragments的引用,并在destroyItem方法中删除它们.

示例代码 –

@H_404_11@public class MyPagerAdapter extends FragmentStatePagerAdapter {    SparseArray<Fragment> registeredFragments = new SparseArray<Fragment>();    public MyPagerAdapter(FragmentManager fm) {        super(fm);    }    @OverrIDe    public int getCount() {        return ...;    }    @OverrIDe    public Fragment getItem(int position) {        return MyFragment.newInstance(...);     }    @OverrIDe    public Object instantiateItem(VIEwGroup container, int position) {        Fragment fragment = (Fragment) super.instantiateItem(container, position);        registeredFragments.put(position, fragment);        return fragment;    }    @OverrIDe    public voID destroyItem(VIEwGroup container, int position, Object object) {        registeredFragments.remove(position);        super.destroyItem(container, position, object);    }    public List<Fragment> getAllFragments() {        List<Fragment> List = new List<Fragment>();        for(int i = 0; i < sparseArray.size(); i++) {           int key = sparseArray.keyAt(i);           // get the object by the key.           List.add(sparseArray.get(key));        }        return List;    }}
总结

以上是内存溢出为你收集整理的java – 从单个按钮中提取多个片段的数据全部内容,希望文章能够帮你解决java – 从单个按钮中提取多个片段的数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1117298.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存