我有一个包含 10 多个字段的表单片段。它们中的每一个都在单击事件时显示一个数字选择器对话框。现在,我如何确定哪个字段在对话框中生成了值选择?由于接口实现,在片段中我有一个回调:
public interface DialogClickListener {
void onDialogClick(DialogFragment dialog, Bundle args);
}
我用以下方法实例化对话框:
private DialogClickListener clickListener;
public static NumberPickerDialogFragment newInstance(final int fiedlId) {
NumberPickerDialogFragment dialog = new NumberPickerDialogFragment();
// Here I can pass arguments to dialog with bundle
Bundle bundle = new Bundle();
bundle.putInt("fieldid", fieldId);
dialog.setArguments(bundle);
return dialog;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Here I can get the arguments
final int fieldId = getArguments().getInt("fieldid");
/* Here I can send the id back to fragment callback dialogclick
* This happen for real inside positive dialog button
*/
final Bundle bundle = new Bundle();
bundle.putInt("fieldid", fieldid);
clicklistener.onDialogClick(NumberPickerDialogFragment.this, bundle);
}
基本上我将字段 id 发送到对话框,然后将其发送回片段回调:这样我可以在片段中打开 id。我认为这个解决方案对于它的目标来说有点过于复杂和冗长。你能建议一个替代方案吗?提前谢谢了。