【发布时间】:2014-10-21 09:51:14
【问题描述】:
我研究了关于片段和片段对话框之间通信的 SO,我发现 setTargetFragment 和接口是一种方法。但是当我尝试 setTargetFragment 时出现此错误。
Fragment 类型中的方法 setTargetFragment(Fragment, int) 不适用于参数 (SettingsDetailsFragment, int)。直到现在我还没有使用片段,而且我是 android 的新手。 所以我有这个片段:
public class SettingsDetailsFragment extends Fragment implements
NoticeDialogFragment.EmailChangedListner {
public void emailUpdateFromDialog()
{
DialogFragment modifyEmailFragment = new ModifyEmailFragment();
//here is where i get the error
modifyEmailFragment.setTargetFragment(this, 0);`enter code here`
modifyEmailFragment.show(getActivity().getFragmentManager(),
"email");
}
}
// class where i have the interface
public class NoticeDialogFragment extends DialogFragment {
public interface EmailChangedListner {
public void emailChanged(String text);
}
}
// the dialogFragment
public class ModifyEmailFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Get the layout inflater
LayoutInflater inflater = getActivity().getLayoutInflater();
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
final View v_iew = inflater.inflate(R.layout.email_dialog, null);
builder.setView(v_iew)
// Add action buttons
.setPositiveButton(R.string.modifyBtn_settings,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
EditText userEmail = (EditText) v_iew
.findViewById(R.id.modifyEmail);
boolean validateEmail = BookMeUtils
.validateEmail(userEmail.getText()
.toString());
if (validateEmail == false) {
BookMeUtils.enterValidEmail(getActivity());
}
if (!(userEmail.getText().toString().length() == 0)) {
if (validateEmail == true) {
Fragment parentFragment = getTargetFragment();
((EmailChangedListner) parentFragment)
.emailChanged(userEmail
.getText().toString());
}
} else {
}
}
})
.setNegativeButton(R.string.cancel_r,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ModifyEmailFragment.this.getDialog().cancel();
}
});
return builder.create();
}
}
【问题讨论】:
标签: android dialog fragment communication