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