从ViewPager的不同片段中获取值 [英] Getting the values from the different fragments from ViewPager

查看:76
本文介绍了从ViewPager的不同片段中获取值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个动态生成片段的应用程序.

I am developing an application where the fragments are being generated dynamically.

private void setupViewPager(ViewPager viewPager) {
    adapter = new ViewPagerAdapter(getSupportFragmentManager());
    for (int i = 0; i < sequence_no.size(); i++) 
    {
        adapter.addFragment(FragmentTwo.newInstance(i,(i+1)));
    }
    viewPager.setAdapter(adapter);
}

现在假设生成了三个片段. 生成的片段确实具有不同的小部件,例如edittext,spinner等. 我做了一个管理,因为我有一个标志通知我要显示哪一个(旋转或编辑文本).

Now suppose there does three fragments got generated. The generated fragments do have different widgets like edittext, spinner etc. which i do mannage as i have one flag which notifies me which one to be displayed(spinner or edittext).

我有一个活动的按钮,单击该按钮时,我需要从所有片段中获取值,但有些方法只能从第一个片段中获取.

I have one button in activity upon whose click i need to get the values from all the fragments bu some how I am getting the value from first fragment only.

我在这里输入了错误的样本,因为我知道它是错误的,但我保留作为参考.

I am putting a wrong sample over here as I know its wrong but I am keeping for reference purpose.

下面是提交按钮单击时的代码,其中value是一个数组列表.

below is the code on submit button click where values is an array list.

if (FragmentTwo.ed_complain != null) 
    {
        values.add(FragmentTwo.ed_complain.getText().toString());
    }
    if (FragmentTwo.cb_complain != null) 
    {
        values.add(FragmentTwo.cb_complain.getText().toString());
    }
    if (FragmentTwo.spinner_complain != null && FragmentTwo.spinner_complain.getSelectedItem() != null) 
    {
        values.add(FragmentTwo.spinner_complain.getSelectedItem().toString());
    }

请建议我从所有片段中获取所有值需要做什么.

Please suggest me what I need to do for fetching all the values from all the fragments.

推荐答案

您可以使用此方法解决此问题. 创建一个Interface并在每个片段中实现它.现在,使用此Interface,您可以从特定片段中获取价值.

You can solve this problem using this way. Create an Interface and implement it in each fragments. Now using this Interface you can get value from specific fragment.

例如,您创建一个Interface

public interface IGetValue{
String getEditTextValue();
}

现在,如果每个Fragment实现此接口,则每个fragment必须实现此getEditTextValue()方法,并且您可以返回该实现的方法的EditText值.只需使用:

Now, if each Fragment implements this interface then each fragment have to implements this getEditTextValue() method and you can return EditText value of that implemented method. just use :

@Override
public String getEditTextValue() {

    return YOUR_EDIT_TEXT.getText().toString();
}

现在,如果要在活动中从Fragment1获取EditText值,只需使用以下代码:

Now, if you want to get EditText value from Fragment1 in your activity, just use this line of code:

String valueFromFragment1= fragment1Instance.getEditTextValue();

有关更多信息,请检查

For more info, check this and this answer.

谢谢:)

这篇关于从ViewPager的不同片段中获取值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆