我有两个片段,一个是片段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");
请有人帮帮我..
提前致谢!
答案 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
它非常干净且可取。没有片段应该直接进行通信。最好的方法是使用调用活动作为两个片段之间的中介