从片段中获取输入数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从片段中获取输入数据相关的知识,希望对你有一定的参考价值。

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

答案

在活动中写入方法

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

并从片段中调用它

 String data = ((YourActivity) context).getData();
另一答案

1)在你的片段中创建一个接口(让我们称之为ActivityMessenger),方法是updateFragmentText(String string);

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

另一答案

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

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

编辑: - 代码参考

    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);
   }

有关使用viewpager的详细说明,请查看此link

另一答案

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

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);

以上是关于从片段中获取输入数据的主要内容,如果未能解决你的问题,请参考以下文章

从viewPager片段(Kotlin)中获取用户输入信息

如何从 Firebase 获取数据到 Recyclerview 中的片段?

Asynctask结果显示重新创建片段后

如何从片段中的 JSON 响应中的对象获取数据

使用片段从数据库 SQLite 获取数据时出错

当我从用户获取数据并将其保存到 SQLite 数据库中时,我应该怎么做才能使列表视图在片段中工作