Android Dialog自定义OnClickListener

Android Dialog customized OnClickListener

我有一个通用的 class 弹出一个简单的对话框:

public class GenericDialogPopUp {

    public static void genericCreatePopUp(Context context) {

    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Title");
    builder.setMessage("message body");

    builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            // do if ok is pressed
        }
    });

    builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
                // do if cancel is pressed
        }
    });

    builder.setIcon(android.R.drawable.ic_dialog_alert);
        builder.show();
    }
}

我需要从 Fragment/Activity:

中调用这个方法
GenericDialogPopUp.genericCreatePopUp(getActivity()); / GenericDialogPopUp.genericCreatePopUp(SomeActivity.this);

问题是我想创建一种 listener 以了解是否按下了对话框中的确定按钮,然后在 this 中执行这些操作(我调用对话框的地方)class,例如:

  if(ok_bt)

     private void doPositive(){                //code            }

   else   

     private void doNegative(){                //code            }

您的genericCreatePopUp方法如下

  public static void genericCreatePopUp(Context context, final SimpleListener listener) {

    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Title");
    builder.setMessage("message body");

    builder.setPositiveButton(okTxt, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            listener.onPosBtnClick();
        }
    });

    builder.setNegativeButton(bt_can, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            listener.onNegBtnClick();
        }
    });

    builder.setIcon(android.R.drawable.ic_dialog_alert);
        builder.show();
    }

SimpleListener 接口:

  interface SimpleListener {
    void onPosBtnClick();
    void onNegBtnClick();
  }

从 Fragment/Activity 中调用:

genericCreatePopUp(context, new SimpleListener (){

     @Override
     onPosBtnClick(){
         // your code
     }

     @Override
     onNegBtnClick(){
          // your code
     }
});