[英]passing EditText values from Fragment to Activity
我在一個Activity中包含的片段中有一個注冊表格。 單擊片段中的提交按鈕時,我需要在主活動中實現一個功能。 通過實現這一行:
android:onClick="signUp"
它直接進入活動。 但是,如何獲取Fragment值? 這很復雜,因為我的片段不知道,因為我在同一位置切換了不同的片段。
我試過了
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_sign_up, container, false);
email =(EditText) v.findViewById(R.id.emailEt);
mListener.setEmail(email.getText().toString());
pass1 = (EditText) v.findViewById(R.id.passEt1);
mListener.setPass1(pass1.getText().toString());
pass2 = (EditText) v.findViewById(R.id.passEt2);
mListener.setPass2(pass2.getText().toString());
pseudo = (EditText) v.findViewById(R.id.pseudoEt);
mListener.setPseudo(pseudo.getText().toString());
signup =(Button) v.findViewById(R.id.signUpB);
return v;
}
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onSignUpFragmentInteraction(Uri uri);
public void setEmail(String email);
public void setPass1(String pass1);
public void setPass2(String pass2);
public void setPseudo(String pseudo);
}
然后在我的活動中:
@Override
public void setEmail(String email) {
}
@Override
public void setPass1(String pass1) {
}
@Override
public void setPass2(String pass2) {
}
@Override
public void setPseudo(String pseudo) {
}
@Override
public void onLoginFragmentInteraction(Uri uri) {
}
但是我不知道該怎么辦...
片段應始終可重用,並獨立於其父活動。 您的注冊表單位於Fragment中,因此您可以讀取Fragment實例中的所有值。 在片段而不是活動中定義OnClickListener。 您可以在Fragment中進行驗證和數據處理,然后將所有值傳遞給Fragment的父Activity。 一個很好的方法是在Fragment中定義一個Interface並在Activity中實現它。 看這里 。
接口將具有類似bool signUp(String username, String email, String password)
。 要從您的Fragment調用此方法,您必須保留對投射到接口的父活動的引用:
private OnFragmentInteractionListener mCallback;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mCallback = (OnFragmentInteractionListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnFragmentInteractionListener");
}
}
通過該引用,您可以調用Interface的方法:
public void signUp(View v) {
// get your values here
mCallback.signUp(...);
}
如果您在Fragment中使用onClick定義對布局進行充氣,請確保在Fragment中實現該方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.