gpt4 book ai didi

android - 从 viewpager 中的 fragment 获取数据

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:01 24 4
gpt4 key购买 nike

我有一个带有 viewpager 的 fragment 和其他 7 个 fragment 。这些 fragment 用于输入用户详细信息。在最后一个 fragment 中,有一个“提交”按钮,我需要在其中获取在其他 fragment 中输入的所有用户详细信息。我该怎么做

我看到了this没有帮助的问题。所以请不要将此问题标记为重复。

基础 fragment :

public class Register_Layout extends Fragment implements ViewPager.OnPageChangeListener{
public Register_Layout(){}

static ViewPager viewPager1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_register_layout, container, false);

viewPager1 = (ViewPager) view.findViewById(R.id.view_pager1);
viewPager1.setOffscreenPageLimit(7);
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
viewPager1.setAdapter(new MyAdapter(fragmentManager));

return view;
}

@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {

}

@Override
public void onPageScrollStateChanged(int state) {

}

}

class MyAdapter extends FragmentPagerAdapter{

public MyAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
Fragment fragment = null;
if(position==0)
{
fragment = new Register();
}

if(position==1)
{
fragment = new Register_Page2();
}

if(position==2)
{
fragment = new Register_Page3();
}

if(position==3)
{
fragment = new Register_Page4();
}

if(position==4)
{
fragment = new Register_Page5();
}

if(position==5)
{
fragment = new Register_Page6();
}

if(position==6)
{
fragment = new Register_Page7();
}
return fragment;
}

@Override
public int getCount() {
return 7;
}
}

我应该在其中获取所有其他 fragment 数据的最终 fragment :

public class Register_Page7 extends Fragment {
public Register_Page7(){

}

EditText editText;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_register_page7, container, false);

Button Previous = (Button) view.findViewById(R.id.Previous7);
Button Regiter = (Button) view.findViewById(R.id.Submit);
Regiter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
alertDialogBuilder.setMessage("Are you sure you want to submit?");

alertDialogBuilder.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {

}
});
alertDialogBuilder.setNegativeButton("No,Let me check the details again", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {

}
});

AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
});

Previous.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Register_Layout().viewPager1.setCurrentItem(5);

}
});
return view;
}
}

最佳答案

您可能希望使用 fragment 管理器获取所有实例化 fragment ,并循环遍历它们以获取相关数据。

您可以创建一个 Fragment 的子类,所有 fragment 都将继承自该子类。这个子类将有一个 getText 方法(或一些其他类型的公共(public)方法),它从 EditText View 中获取文本。

对于其他类型的数据(如开关),您可以使用类似的函数从 fragment 中获取数据。

已编辑

因此您可以创建一个派生自 Fragment 的新 fragment 。

public class BaseEntryFragment extends Fragment {
public BaseEntryFragment() {}

public String getEntryText() {}
}

然后您使用现有的 fragment 并扩展您的新 fragment ..

public class Register_Page7 extends BaseEntryFragment {

private EditText _editText;

public Register_Page7() {}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
//other create view code
_editText = (EditText)FindViewById(R.id.edit_text);
}

@Override
public String getEntryText() {
return _editText.getText();
}
}

然后提交..

List<Fragment> fragments = getActivity().getSupportFragmentManager().getFragments();
for(Fragment frag : fragments) {
// do type checks here
BaseEntryFragment f = (BaseEntryFragment)frag;
String someValue = f.getEntryText();
}

请注意,我的 Java 真的很生疏,所以它可能不是完美的语法。这只是一些让您入门的代码,不可复制和粘贴。

关于android - 从 viewpager 中的 fragment 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39728133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com