从片段中获取输入数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从片段中获取输入数据相关的知识,希望对你有一定的参考价值。
我正在进行一项主要活动,包括与不同的view pager
的fragments
。每个片段都将一些输入字段继承为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);
以上是关于从片段中获取输入数据的主要内容,如果未能解决你的问题,请参考以下文章