如何从一个片段中获取值并传递给另一个片段

时间:2015-08-13 10:44:47

标签: java android

我有两个片段,一个是片段X和片段y ..片段X用于使用webservice进行注册过程。我想通过(电子邮件,移动)将相同的值从片段X传递到片段Y.

这是我的代码:

片段x:

Signup.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    String sName = Name.getText().toString();
                    String sPhoneNo = Phone.getText().toString();
                    String sEmailId = EmailId.getText().toString();



                    // Instantiate Http Request Param Object
                    RequestParams params = new RequestParams();

                    if (Utility.isNotNull(sName) && Utility.isNotNull(sPhoneNo) && Utility.isNotNull(sEmailId) ) {
                        if (Utility.line2_validate(sName)) {
                            if (Utility.validate(sPhoneNo)) {
                                if (Utility.email_validate(sEmailId)) {

                                   //Get value from this Fragment 
                                    FragmentY pf = new FragmentY ();
                                    Bundle args = new Bundle();
                                    args.putString("mobile", sPhoneNo);
                                    args.putString("email",sEmailId);
                                    pf.setArguments(args);

                                    //Inflate the fragment
                                    getFragmentManager().beginTransaction().add(R.id.passwordLayout, pf).commit();

                                    // Put Http parameter username with value of Name Edit View control
                                    params.put("name", sName);
                                    // Put Http parameter email with value of Email Edit Value control
                                    params.put("email", sEmailId);
                                    // Put Http parameter mobile with value of Mobile Edit Value control
                                    params.put("mobile", sPhoneNo);
                                    // Invoke Signup RESTful Web Service with Http parameters
                                    signUpWS(params);

                                    //Toast.makeText(getActivity().getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
                                    //((MainActivity) getActivity()).navigatetoPasswordActivity();

                                }
                                else {
                                    EmailId.setError("Enter valid Email");
                                }

                            }
                            else {
                                Phone.setError("Enter valid Mobile");
                            }

                        }
                        else {
                            Name.setError("Enter valid Name");
                        }

                    }
                    else {
                        Toast.makeText(getActivity().getApplicationContext(), "Please fill the form, don't leave any field blank", Toast.LENGTH_SHORT).show();
                    }
                }



            });

片段Y:

//  Retrive the value from fragment x
String strMobile = getArguments().getString("mobile");
                String strEmail = getArguments().getString("email");

请有人帮帮我..

提前致谢!

3 个答案:

答案 0 :(得分:1)

您可以通过在片段

中创建构造函数来将值传递给fargment

例如,

片段x的

在构造函数中传递值

PasswordFragment pf = new PasswordFragment (name, email, mobile);

for fragmnet y 您可以从此构造函数中检索值

String name, email, mobile
public PasswordFragment(String name, String email, String mobile) {
        // TODO Auto-generated constructor stub
        this.name=name;
        this.email=email;
        this.mobile=mobile;
}

答案 1 :(得分:0)

我知道Fragment应该通过他们所附带的活动进行交流;解决问题的方法是声明

final Activity activity = this.getActivity();

并使用它通过活动属性(您选择的私有或公共)传递您需要的值,例如

String value1;
String value2; //Into Activity

,一旦你填满它们,你就可以从FragmentY中检索它们的值。

编辑:当然,在片段中声明最终的Activity对象时,需要对YourCustomActivity进行强制转换。

答案 2 :(得分:0)

我建议你研究一下。  http://developer.android.com/training/basics/fragments/communicating.html

它非常干净且可取。没有片段应该直接进行通信。最好的方法是使用调用活动作为两个片段之间的中介