Android:组织显示警报对话框的方法的最佳实践是什么

时间:2019-06-30 08:37:45

标签: java android

我是Android开发的初学者。假设我有一些方法可以显示Activity中的AlertDialog。但是每种AlertDialog行为都略有不同。组织显示AlertDiaolog的方法的最佳实践是什么?

代码是这样的。

private void showNumberPickerDialog() {
    LayoutInflater inflater = this.getLayoutInflater();
    View numberPickerDialogView = inflater.inflate(R.layout.number_picker, null);
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
    alertDialog.setTitle("Title for number picker here");
    alertDialog.setCancelable(false);
    alertDialog.setView(numberPickerDialogView);
    final NumberPicker numberPicker = roomSizeNumberDialogView.findViewById(R.id.number_picker);
    numberPicker.setMaxValue(10);
    numberPicker.setMinValue(0);
    numberPicker.setWrapSelectorWheel(false);
    alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
             // Something here
                       }
    });
    alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
          }
    });
    alertDialog.show();        
}


private void showMessageDialog(final boolean isA) {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
    alertDialog.setTitle("Title here");
    alertDialog.setCancelable(false);
    alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            if (isA) {
                doA();
            } else {
                doB();
            }
        }
    });
    alertDialog.show();
}

private void showAlertDialogC() {
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
    final EditText inputEditText = new EditText(this);
    inputEditText.setInputType(InputType.TYPE_CLASS_TEXT);
    innputEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
    alertDialog.setTitle("Title here");
    alertDialog.setCancelable(false);
    alertDialog.setView(nameEditText);
    alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
        // Do something here
    });
    alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });
    alertDialog.show();
}

有没有组织这样的部分的好方法?

2 个答案:

答案 0 :(得分:0)

如果您要查找的话,也可以使用可自定义的对话框。

final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.dialog_options);
dialog.show();
TextView tvDelete = dialog.findViewById(R.id.tvDelete);
tvDelete.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    dialog.dismiss();
    Dialog deleteDialog = new Dialog(context);
    deleteDialog.setContentView(R.layout.dialog_delete);
    deleteDialog.show();
  }
});

对待它就像对待活动一样。在要执行某些特定操作的视图上设置onClickListeners。我相信这个自定义对话框比AlertDialog

更灵活

答案 1 :(得分:0)

我喜欢在一个单独的类中处理我的对话框,这样您就可以更好地控制所有内容-clickListners,布局设计等,而且您的活动中没有大量的代码行。

例如,创建dialogClass:

public class ProgressDialog extends Dialog {

public ProgressDialog(@NonNull Context context) {
    super(context);

    setContentView(R.layout.progress_dialog); //this is your layout for the dialog

    }
}

所有您需要做的就是立即创建对话框并按以下方式调用它:

ProgressDialog progressDialog = new ProgressDialog(getContext());
progressDialog.show(); // this line shows your dialog