1

我有一个包含 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。我认为这个解决方案对于它的目标来说有点过于复杂和冗长。你能建议一个替代方案吗?提前谢谢了。

4

0 回答 0