如何在静态方法中处理点击监听器?

How can I handle the click listener inside the static method?

每次我想使用它时都初始化AlertDialog很无聊,我有很多使用AlertDialog的活动所以我想简化它并创建一个class 初始化 AlertDialog 并在需要时显示它。

这是我创建的 DialogManager class:

public class DialogManager {

    private static AlertDialog.Builder builder;

    public static void show(Context context, int themeResId, String title, String message, String positiveButtonText) {
        builder = new AlertDialog.Builder(context, themeResId)
                .setTitle(title)
                .setMessage(message)
                .setPositiveButton(positiveButtonText, null);
        builder.show();
    }

    public static void show(Context context, int themeResId, String title, String message, String positiveButtonText, String negativeButtonText) {
        builder = new AlertDialog.Builder(context, themeResId)
                .setTitle(title)
                .setMessage(message)
                .setPositiveButton(positiveButtonText, null)
                .setNegativeButton(negativeButtonText, null);
        builder.show();
    }

}

一切正常,但我遇到了点击监听器的问题,我该如何处理点击监听器,因为每个 activity 都会以自己的方式处理按钮。

我该如何处理?

setPositiveButtonDialogInterface.OnClickListener 作为第二个参数,因此只需将其添加为方法参数即可

public static void show(Context context, int themeResId, String title, String message,
        String positiveButtonText,
        DialogInterface.OnClickListener positiveCallback) {
    show(context, themeResId, title, message,
        positiveButtonText, positiveCallback,
        null, null); // no negative in this case
}

public static void show(Context context, int themeResId, String title, String message,
        String positiveButtonText,
        DialogInterface.OnClickListener positiveCallback,
        String negativeButtonText,
        DialogInterface.OnClickListener negativeCallback) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context, themeResId)
            .setTitle(title)
            .setMessage(message)
            .setPositiveButton(positiveButtonText, positiveCallback);
    if (negativeButtonText!=null) {
        builder.setNegativeButton(negativeButtonText, negativeCallback);
    }
    builder.show();
}

并且不要过度使用 static 关键字,将 static Builder 保留在该文件之上是不正确的方法(在某些情况下可能会导致内存泄漏,可能同样在你的情况下),所以删除下面的行并只保留本地构建器直到你调用 builder.show()

private static AlertDialog.Builder builder;

setPositiveButton 将 DialogInterface.OnClickListener 作为第二个参数,因此只需将其添加为方法参数即可。