【问题标题】:get input from fragments从片段中获取输入
【发布时间】:2018-04-28 12:58:13
【问题描述】:

我有一个 ViewPager,里面有 3 个片段,每个片段都有一个 next 和 prev。按钮,您还可以左右滑动浏览片段。虽然我能够在单击下一个按钮时从每个片段中获取输入,但我仍然无法找到当用户在片段之间滚动时获取输入的方法。

这是我的第一个片段中的代码:

    public class signupfrag1 extends Fragment {
    private TextInputEditText fName, lName;
    public Spinner spncountry, spncity;
    private Button next1;
    private String vfName, vlName, vcountry, vcity;
    private String method;
    signupfrag1Listener activityCommander;

    public interface signupfrag1Listener{
        public void getDataFromFrag1(String fName, String lName, String countryName, String cityName);
    }

   @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try{
            activityCommander = (signupfrag1Listener) context;
        }catch (ClassCastException e){
            throw new ClassCastException(context.toString());
        }

    }
@Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
     View view = inflater.inflate(R.layout.signupfrag1, container, false);
     fName = (TextInputEditText) view.findViewById(R.id.edtFName);
     lName = (TextInputEditText) view.findViewById(R.id.edtLName);
     spncountry = (Spinner) view.findViewById(R.id.cmbCountry);
     spncity = (Spinner) view.findViewById(R.id.cmbCities);
     next1 = (Button) view.findViewById(R.id.btnNext2);

next1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             vfName = fName.getText().toString();
             vlName = lName.getText().toString();

             if(vfName.equals("") || vfName.length()==1){
                 fName.setError("please enter a correct first name!");
             }
             else if(vlName.equals("") || vlName.length()==1){
                 lName.setError("Please enter a correct first name!");
             }
             else
                startFrag2(view);
         }
     });}

public void startFrag2(View view){
            activityCommander.getDataFromFrag1(vfName, vlName, vcity, vcountry);

        }

这是我主要活动的代码:

public class Main2Activityforfragments extends AppCompatActivity implements signupfrag1.signupfrag1Listener, signupfrag2.signupfrag2Listener {
    private ViewPager fragsViewPager;
    private SectionsPagerAdapter1 sectionsPagerAdapter1;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2_activityforfragments);

fragsViewPager = (ViewPager) findViewById(R.id.fragsViewPager);
    sectionsPagerAdapter1 = new SectionsPagerAdapter1(getSupportFragmentManager());
    fragsViewPager.setAdapter(sectionsPagerAdapter1);


}


//this get called when the next button is clicked
@Override
public void getDataFromFrag1(String fName, String lName, String cityName, String countryName) {
    if(fragsViewPager.getCurrentItem() == 0){
        fragsViewPager.setCurrentItem(1);}

}

【问题讨论】:

  • 也发布您的代码。
  • 为此使用 java 接口。
  • @farhana 我已经发布了
  • @我会使用 java 接口,但是当用户从一个片段滑动到另一个片段时,我现在不知道如何使用它
  • 意思是,你想按顺序从一到二到三传递数据?

标签: android input android-viewpager


【解决方案1】:

如果您在第一个片段中,则创建 ref。接口并调用其方法并在单击所需的值上传递值,并且需要在SecondFragment 中实现Two 接口。在第一个片段中调用它的方法。你可以在SecondFragment 中创建接口Two

Two Second=new SecondFragment();  // it will be called on click of firstFragment which pass the value.
Second.two("Value one","Value two");

interface Two{
void two(String value,String value);   // implement this inteface in SecondFragment and call it in FirstFragment
}

当您到达第二个时,您会从第一个片段中获取值并继续使用第三个片段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多