从片段获取输入数据

时间:2018-08-31 13:35:19

标签: android android-fragments android-viewpager

我正在进行一项主要活动,其中包括一个view pager和一个不同的fragments。每个片段都将某些输入字段继承为EditTexts。现在,我在问如何从主要活动中收集所有这些数据。

4 个答案:

答案 0 :(得分:0)

在活动中写方法

public String getData() {
        return editText.getText().toString();
    }

然后从片段

调用它
 String data = ((YourActivity) context).getData();

答案 1 :(得分:0)

1)在片段中,使用方法updateFragmentText(String string);创建一个接口(我们称其为ActivityMessenger);

2)您还必须使变量ActivityMessenger mActivityMessenger;并重写onAttach(Context context)方法。

因此Fragment代码段应如下所示:

public class YourFragment extends Fragment {
  //... field declarations here
  ActivityMessenger mActivityMessenger;

  // ... constructor and other stuff

  public interface ActivityMessenger {
    updateFragmentText(String text);
  }

  // ... on mButton click event we send this String to Activity:
  mButton.setOnClickListener(v->mActivityMessenger.updateFragmentText(message));

  @Override
  onAttach(Context context){
    // here we attach the parent Activity as an ActivityMessenger
    mActivityMessenger = (ActivityMessenger)context;
  }
}

在您的主要活动中:

public class YourActivity extends AppCompatActivity implements ActivityMessenger {
// ... field declarations
private String mStringFromFragment;
// ... other stuff, init Fragment etc.

  @Override
  updateFragmentText(String text){
    mStringFromFragment = text;
  }
}

就是这样。希望我能为您服务! 关于Cs

答案 2 :(得分:0)

您将需要提供有关如何设计应用程序的更多信息。在活动中使用viewpager,您将只能从活动的片段(显示的片段)中收集数据。

您可以将所有editTexts放在一个片段上,并收集信息并通过意图将其传递给另一活动。

编辑:-代码参考

    public class SampleFragment extends Fragment {
    public View onCreateView(..){
    ....
    }
     public void onButtonClicked(View view){

     //collect data from your edit texts
     string text = editText.getText().to String();
     string text2 = editText2.getText().toString();
     ....
      ..
    //send data via intent
    Intent anotherActivity = new Intent(this, anotherActivity.class);
    anotherActivity.putExtra("Text1", text);
    anotherActivity.putExtra("Text2", text2);
    .......
    startActivity(anotherActivity);
   }

选中此link,以获取有关使用viewpager的详细说明

答案 3 :(得分:0)

在您的活动中定义保存您的片段值的全局字符串变量:

String firstFragmentEdittext;
String secondFragmentEdittext;
String thirdFragmentEdittext;

并定义按每个片段访问的方法:

public void setValue(String editTextValue, int fragmentIndex)
    {
        switch(fragmentIndex)
        {
            case 1:
            {
                firstFragmentEdittext = editTextValue;
                break;
            }
            case 2:
            {
                secondFragmentEdittext= editTextValue;
                break;
            }
            case 3:
            {
                thirdFragmentEdittext= editTextValue;
                break;
            }
        }
    }

如何从片段发送到活动:对于片段1

((YourActivity) getActivity()).setValue(edittext.getText().toString(), 1);