Пользовательский DialogFragment говорит, что мои EditTexts равны нулю - PullRequest
0 голосов
/ 08 декабря 2018

Я определенно делаю что-то не так в 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 голосов
/ 08 декабря 2018

Да, ваши EditTexts всегда будут нулевыми.Это потому, что вы используете findViewById для представления, которое не содержит их.Обратите внимание на эту строку:

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

Вы надуваетесь после того, как уже используете findViewById.Вот что не так.

Сначала получите корневой макет своего представления:

<code>View view = inflater.inflate(R.layout.dialog_add_exercise, null);
Затем найдите свои представления:
EditText editText = view.findViewById(R.id.editText);

Наконец, после того, как вы нашли все представления, которые хотите, используйте корневой макет основного вида на вашем компоновщике.

builder.setView(view)...
...