首页 文章

自定义DialogFragment说我的EditTexts为空

提问于
浏览
0

我肯定在onCreateDialog()中做错了什么 . 监听器正常工作,我能够传递我传入的主机片段字符串,但是,我收到错误,说我的EditTexts为空 . 另外,我对编码很新,所以请原谅这个烂摊子 .

我应该从哪里获取它们的参考?

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    // Get the layout inflater
    LayoutInflater inflater = getActivity().getLayoutInflater();


    builder.setTitle("Add Exercise");

    AlertDialog dialog = builder.create();
    final EditText name = (EditText) dialog.findViewById(R.id.ex_name);
    final EditText sets = (EditText) dialog.findViewById(R.id.ex_sets);
    final EditText reps = (EditText) dialog.findViewById(R.id.ex_reps);
    final EditText weight = (EditText) dialog.findViewById(R.id.ex_weight);

    builder.setView(inflater.inflate(R.layout.dialog_add_exercise, null))
    .setPositiveButton("Add", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            // User clicked Add button
            //listener.onDialogPositiveClick(AddExerciseDialogFragment.this);
            listener.getName(name.getText().toString().trim());
            listener.getName(name.getText().toString().trim());
            listener.getSets(Integer.parseInt(sets.getText().toString().trim()));
            listener.getReps(Integer.parseInt(reps.getText().toString().trim()));
            listener.getWeight(Double.parseDouble(weight.getText().toString().trim()));
            dismiss();
        }
    })
    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            // User cancelled the dialog
            //listener.onDialogNegativeClick(AddExerciseDialogFragment.this);
            dismiss();
        }
    });

    //dialog.show();

    return builder.create();
}

1 回答

  • 0

    是的,您的EditTexts将始终为null . 那是因为你在不包含它们的视图上使用findViewById . 请注意这一行:

    builder.setView(inflater.inflate(R.layout.dialog_add_exercise, null))
    

    您_66984已经使用了findViewById . 那个_66985错了 .

    首先,获取您的视图根布局:

    View view = inflater.inflate(R.layout.dialog_add_exercise, null);
    

    然后,找到你的观点:

    EditText editText = view.findViewById(R.id.editText);
    

    最后,在找到所需的所有视图后,使用构建器上的主视图根布局 .

    builder.setView(view)...
    

相关问题