如何重用 android 警报对话框

how to reuse android alertdialog

我想重用 alertDialog 的代码并将其作为函数调用放在另一个 java 文件中。但是 "this" 不能用来代替 "MyActivity.this" 吗?如何将它作为参数传递?如果代码是通用的最好。

    AlertDialog alertDialog = new AlertDialog.Builder(MyActivity.this).create();
            alertDialog.setTitle("Alert");
            alertDialog.setMessage("Alert message to be shown");
            alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });
            alertDialog.show();

你可以在单独的 class 中使用类似的东西,例如我已经使用 AlertUtils.java:

public class AlertUtils
{
    public static void showOKDialog(Context context, String title, String message)
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle(title);
        builder.setMessage(message);
        builder.setPositiveButton(android.R.string.ok, null);
        builder.show();
    }
}

在这个方法中,你通过的Context可能是你的Activity的这个,例如:MyActivity.this或者片段的getContext()

AlertUtils.showOKDialog(MyActivity.this, "title of dialog", "message to display in dialog");

public class Utils {
    public void showDialog(Context context) {
        AlertDialog alertDialog = new AlertDialog.Builder(context).create();
        alertDialog.setTitle("Alert");
        alertDialog.setMessage("Alert message to be shown");
        alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
        alertDialog.show();
    }
}

在您的 Activity 中,您可以通过

重新使用显示对话框

new Utils().showDialog(MyActivity.this);

您可以在 class 中单独编写您的警报对话框代码,如下所示:

public class Utils{
  public static void showMessage(final Activity activity, String title, String posText){

    MaterialDialog dialog = new MaterialDialog.Builder(activity)
            .content(title)
            .positiveText(posText)
            .onPositive(new MaterialDialog.SingleButtonCallback() {
                @Override
                public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {

                    dialog.dismiss();
                }
            })
            .build();
    dialog.show();

}
}

从您的 activity / 片段中,您可以称其为:

Activity,

AppUtils.showMessage(this, getString("your text"), getString("your text"));

片段,

AppUtils.showMessage(getActivity(),getString("your text"), getString("your text"));

在两个片段或 activity 中导入 Utils class 然后一切都会完美地工作。

希望这可以帮助您摆脱问题。