Диалог падает, когда setOnClickListener - PullRequest
0 голосов
/ 27 июня 2018

я создаю пользовательский класс диалога. Это диалоговое окно работает хорошо и отображается, но когда происходит сбой приложения setOnClickListener. Я думаю, что проблема в setView, пожалуйста. Guide.i вызовите этот класс во фрагменте / в чем проблема

clDialogs = new Cl_Dialogs();
clDialogs.showPopup(getContext());


package ir.lilola.org;

import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Cl_Dialogs {
Dialog dialog;
public void showPopup(Context context){
    dialog = new Dialog(context);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    Button Category = dialog.findViewById(R.id.category);
    final Button Date = dialog.findViewById(R.id.date);
    Button Time = dialog.findViewById(R.id.time);
    Button Confirm = dialog.findViewById(R.id.confirm);
    Confirm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });
    Button Delete = dialog.findViewById(R.id.del);
    EditText Price = dialog.findViewById(R.id.price);
    EditText Label = dialog.findViewById(R.id.label);
    TextView dateText = dialog.findViewById(R.id.dateText);
    TextView timeText = dialog.findViewById(R.id.timeText);
    TextView labelText = dialog.findViewById(R.id.labelText);
    TextView priceText = dialog.findViewById(R.id.priceText);
    dialog.setContentView(R.layout.dialog_registers);
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    dialog.show();

}
}

1 Ответ

0 голосов
/ 27 июня 2018

Вам нужно позвонить

dialog.setContentView(...);

раньше, чем любой из

dialog.findViewById(...);

Это связано с тем, что без настройки contentView findViewById(..) вернет null, поскольку не удалось найти представление по заданному идентификатору.

Поэтому, когда вы пытаетесь вызвать setOnClickListener(..), вы вызываете метод против null, в итоге вы получаете NullPointerException

Взгляните на официальный документ: Здесь

...