AlertDialog Extern - 一切正常,但没有按照我的意愿返回值

时间:2014-03-17 22:08:26

标签: java android alertdialog android-alertdialog

我正在尝试为AlertDialog创建一个extern类。我希望有一个通用的类来快速使用它。
我知道代码并不困难,但无论如何都要编写(或复制)许多行,如果我愿意的话发现一个错误我可能不得不改变许多代码...
除了一件我没有得到的东西,我什么都没有 所以它有效,但返回正确的onClick不起作用 我还试着在返回之前做一个while循环,但随后应用程序挂起.... 有人有什么想法吗?

public class RalaAlertDialog{
private static AlertDialog.Builder alertDialog;
private static long onClick=RalaInterfaceDefault.FehlerSpezialZahl;

//neutralButton
public static long AlertDialogNeutral(Context class_this, String mssg, String ntrlBttnTxt, boolean dismissable, String title){
    onClick=RalaInterfaceDefault.FehlerSpezialZahl; //default error number
    alertDialog=new AlertDialog.Builder(class_this);
    if(mssg.equals("")){
        mssg="DEFAULT-TEXT";
    }
    if(title.equals("")){
        title="DEFAULT-TITLE";
    }
    if(ntrlBttnTxt.equalsIgnoreCase("")){
        System.out.println("No values set - default in use.");
        ntrlBttnTxt="OK";
    }
    alertDialog.setMessage(mssg)
    .setCancelable(dismissable);
    alertDialog.setTitle(title);

    alertDialog.setPositiveButton(ntrlBttnTxt,
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id){
                    onClick=0;
                    dialog.dismiss();
                }
            }
    );

    AlertDialog a=alertDialog.create();
    a.show();
    //wait until button is click before continuing
    return onClick;
}

1 个答案:

答案 0 :(得分:1)

public static AlertDialog getAlertDialog(Context ctx, String title, String message, String posButton, boolean dismissable, final DialogInterface.OnClickListener ocl) {

    AlertDialog.Builder builder =new AlertDialog.Builder(ctx);
    builder.setTitle(title)
        .setMessage(message)
        .setCancelable(dismissable)
        .setPositiveButton(posButton,
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id){
                    dialog.dismiss();
                    if(ocl!=null) ocl.onClick(dialog, id);
                }
            });

    AlertDialog dialog = builder.create();
    return dialog;
}

像这样使用:

    AlertDialog dialog = getAlertDialog(this,"Hello","World","OK",false,new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Log.i("DIALOG","OK Clicked");
        }
    });
    dialog.show();

当然你只需要一个OnClickListener,但我更喜欢它。