繁体   English   中英

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

[英]Android: What is the best practice to organize methods to show alert dialog

我是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();
}

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

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

 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灵活得多

我喜欢在一个单独的类中处理我的对话框,这样您就可以更好地控制一切-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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM