Как написать пользовательское предупреждение внутри класса, не связанного с активностью, в Android?

#android #android-alertdialog #android-custom-view #android-inflate

Вопрос:

Я должен написать пользовательское предупреждение для класса неактивности, чтобы показать это из всех действий. Я использовал надуватель для пользовательского оповещения, но это приводит к сбою приложения. Пожалуйста, ознакомьтесь с приведенным ниже кодом.Пожалуйста, предложите решение для этого

   AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
   LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );

      //  LayoutInflater inflater = context.getLayoutInflater();
        View dialogView = inflater.inflate(R.layout.alertlayout, null);
        dialogBuilder.setView(dialogView);
        dialogBuilder.setCancelable(false);
        TextView btn_ok = dialogView.findViewById(R.id.btn_ok);
        TextView txt_dia = dialogView.findViewById(R.id.txt_dia);

        txt_dia.setText(msg);

        if(subAlertDialog != null amp;amp; subAlertDialog.isShowing()) {
            return;
        }
        subAlertDialog = dialogBuilder.create();
        subAlertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
        subAlertDialog.show();
        btn_ok.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
            subAlertDialog.dismiss();
                return false;
            }
        });
 

Ответ №1:

Попробуйте использовать следующий код, он вам поможет.

  //Call dialog from activity 
   CustomDialog.showDialog(this);

//This is your custom dialog class
public class CustomDialog {

public static void showDialog(Context context){
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
    LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
    View dialogView = inflater.inflate(R.layout.alertlayout, null);
    dialogBuilder.setView(dialogView);
    dialogBuilder.setCancelable(false);
    TextView btn_ok = dialogView.findViewById(R.id.btn_ok);
    TextView txt_dia = dialogView.findViewById(R.id.txt_dia);

    txt_dia.setText("abc");
    btn_ok.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });
    dialogBuilder.create().show();
}
}