仅取消方法警报对话框的返回值已被取消

时间:2014-07-02 09:06:25

标签: android

我必须从方法中返回一些值。 现在在方法内部我打开了一个AlertDialog

所以我的问题是我的方法在打开AlertDialog时返回值。 我希望from方法只有在对话框被解除时返回String值。 我的代码是

public String capture(final String uid, final String id) {

        final Dialog dialog = new Dialog(WebActivity.this,
                android.R.style.Theme_Holo_Light_Dialog);
        dialog.setContentView(R.layout.dialog_custom);



        ImageView image = (ImageView) dialog.findViewById(R.id.image);



        Button dialogButton = (Button) dialog
                .findViewById(R.id.dialogButtonOK);

        mCapture= new Capture(WebActivity.this);
        int isInitialised = mCapture.initialize();
        final String res = mCapture.capture(uid, id,
                image, dialog);

        // if button is clicked, close the custom dialog
        dialogButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                dialog.dismiss();
                // return response;
                scenario1Response = res;
            }
        });

        if (!dialog.isShowing()) {
            return scenario1Response;
        }
    }

但它是说添加退货声明。虽然我只想返回,但对话框已经点击了

请帮助我如何实现它?

提前致谢

2 个答案:

答案 0 :(得分:0)

您可以像这样使用对话框onDismissListener

alertDialog.setOnDismissListener(new OnDismissListener() {

    @Override
    public void onDismiss(DialogInterface dialog) {
        // TODO Auto-generated method stub
        //your logic of returning goes here             
    }
});

希望它有所帮助。

答案 1 :(得分:0)

您可以通过不同的方法实现此目的,您不必通过函数返回值。 您可以将值分配给某个全局变量,同时取消对话框并在需要的位置使用它。

public void capture(final String uid, final String id) {

        final Dialog dialog = new Dialog(WebActivity.this,
                android.R.style.Theme_Holo_Light_Dialog);
        dialog.setContentView(R.layout.dialog_custom);



        ImageView image = (ImageView) dialog.findViewById(R.id.image);



        Button dialogButton = (Button) dialog
                .findViewById(R.id.dialogButtonOK);

        mCapture= new Capture(WebActivity.this);
        int isInitialised = mCapture.initialize();
        final String res = mCapture.capture(uid, id,
                image, dialog);

        // if button is clicked, close the custom dialog
        dialogButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                dialog.dismiss();
                // return response;
                scenario1Response = res; // this can be your global variable
            }
        });


    }

并更改您调用此函数的位置,例如:

VARIABLE myval = capture(param1, param2);
像这样:

capture(param1, param2);
VARIABLE myval = scenario1Response;

希望你明白我的意思..