Как задействовать RadioButton в диалоговом окне

Рейтинг: 1Ответов: 1Опубликовано: 12.03.2023

При выборе одного из вариантов RadioButton и нажатии кнопки "Выбрать" выводится ошибка:

Attempt to invoke virtual method 'int android.widget.RadioGroup.getCheckedRadioButtonId()' on a null object reference
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
    BottomSheetDialog dialog = new BottomSheetDialog(context);
    View view1 = dialog.getLayoutInflater().inflate(R.layout.bottomsheet, null, false);
    Button setStatus = view1.findViewById(R.id.setStatus);
    Button delete = view1.findViewById(R.id.delete);

    delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            new MaterialAlertDialogBuilder(context)
                    .setTitle("Удалить")
                    .setNegativeButton("Нет", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            dialogInterface.dismiss();
                        }
                    }).setPositiveButton("Да", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            FirebaseDatabase database = FirebaseDatabase.getInstance();
                            database.getReference("Text").child(problem.getuId())
                                    .setValue(null);

                            dialog.dismiss();
                        }
                    }).show();

        }
    });

    database = FirebaseDatabase.getInstance().getReference("Text");
    setStatus.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            MaterialAlertDialogBuilder materialAlertDialogBuilder  = new MaterialAlertDialogBuilder(context);
                    materialAlertDialogBuilder.setMessage("Установить статус");
                    materialAlertDialogBuilder.setView(R.layout.activity_set_status_problem);
                    materialAlertDialogBuilder.setNegativeButton("Отмена", new DialogInterface.OnClickListener() {
                       @Override
                       public void onClick(DialogInterface dialogInterface, int i) {
                           dialogInterface.dismiss();
                       }
                   });
                    materialAlertDialogBuilder.setPositiveButton("Выбрать", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                        RadioGroup radioGroup = view.findViewById(R.id.radioGroup);
                        int chekId = radioGroup.getCheckedRadioButtonId();
                        switch (chekId){
                            case R.id.in_work:
                                problem.setStatus("aaa");
                                break;
                            case R.id.put_out:
                                problem.setStatus("bbb");
                        }
                        }
                    });
                    materialAlertDialogBuilder.show();
        }
    });

     dialog.setContentView(view1);
     dialog.show();
     return true;
}
});

Ответы

▲ 0Принят
RadioGroup radioGroup = view.findViewById(R.id.radioGroup);

Вы ищете радио-группу через ссылку view, которая указывает на кнопку, по которой кликнули (setStatus) - то есть внутри этой кнопки.

Нужно либо "надуть" разметку activity_set_status_problem (создать из неё View) и искать там, как у вас сделано для первого BottomSheetDialog.
Либо искать радио-группу через ссылку на диалог, в котором она отображается:

public void onClick(DialogInterface dialogInterface, int i) {
    RadioGroup radioGroup = ((Dialog) dialogInterface).findViewById(R.id.radioGroup);
    int chekId = radioGroup.getCheckedRadioButtonId();
    ...