android中方法回调的使用

0 阅读1分钟

Common.showIntelligentControlDialog(context, "是否确认清除记录?"); 方法增加一个callback回调方法。

为了给showIntelligentControlDialog方法增加回调功能,我们需要修改Common类中的方法定义,并在调用时传入回调函数。以下是修改后的代码: 首先修改Common类中的方法:

public static void showIntelligentControlDialog(Context context, String Content, Runnable onConfirm) {
        View view_dialog = LayoutInflater.from(context).inflate(R.layout.activity_intelligent_control, null);

        AlertDialog[] dialog = {new AlertDialog.Builder(context).create()};
        dialog[0].show();
        dialog[0].setCancelable(false);
        Window window = dialog[0].getWindow();
        window.setBackgroundDrawable(new BitmapDrawable());
        window.setContentView(view_dialog);

        Button btnCancel = view_dialog.findViewById(R.id.dialog_cancel);
        Button btnOk = view_dialog.findViewById(R.id.dialog_ok);
        TextView tvDeviceOperateContent = view_dialog.findViewById(R.id.tvDeviceOperateContent);
        tvDeviceOperateContent.setText(Content);

        btnCancel.setOnClickListener(v -> {
            dialog[0].dismiss();
            dialog[0] = null;
        });
        
        btnOk.setOnClickListener(v -> {
            dialog[0].dismiss();
            dialog[0] = null;
            if (onConfirm != null) {
                onConfirm.run();
            }
        });
    }

然后在AlarmSettingDialog类中调用时传入回调:

  // 记录清除
        RelativeLayout rlRecordClearing = view_dialog.findViewById(R.id.rlRecordClearing);
        rlRecordClearing.setOnClickListener(v -> {
            Common.showIntelligentControlDialog(context, "是否确认清除记录?", () -> {
                // 在这里添加清除记录的具体逻辑
                // 例如:clearRecords();
            });
        });