Java 执行不';不要等待Alertdialog.Disclose()发出警报

Java 执行不';不要等待Alertdialog.Disclose()发出警报,java,android,Java,Android,我正在开发一个Android应用程序,我有一个问题: 如何使执行等待,直到用户从警报对话框中选择一个选项? 这是我的代码: if (mPerson== null) { mPerson = new Person(); AlertDialog dialog = null; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMes

我正在开发一个Android应用程序,我有一个问题:

如何使执行等待,直到用户从
警报对话框
中选择一个选项?

这是我的代码:

    if (mPerson== null)
    {
        mPerson = new Person();
        AlertDialog dialog = null;
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage(getString(R.string.dialog_message_select))
        .setTitle(getString(R.string.dialog_title_attention));
        builder.setPositiveButton(R.string.male, new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
                mPerson.setGender(Gender.male);
                dialog.dismiss();
            }
        });
        builder.setNegativeButton(R.string.female, new DialogInterface.OnClickListener()
        {

            @Override
            public void onClick(DialogInterface dialog, int arg1)
            {
                mPerson.setGender(Gender.female);
                dialog.dismiss();
            }
        });

        dialog = builder.create();
        dialog.show();
    }

    // TODO: Show data.

    getWidgetsRefereces();
    customizeLayout();

    loadSpinnerValues();
dialog.disclose()之后
我必须执行以下操作:

    // TODO: Show data.

    getWidgetsRefereces();
    customizeLayout();

    loadSpinnerValues();
请执行以下操作:

 AlertDialog dialog = null;
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(getString(R.string.dialog_message_select))
    .setTitle(getString(R.string.dialog_title_attention));
    builder.setPositiveButton(R.string.male, new DialogInterface.OnClickListener()
    {
        public void onClick(DialogInterface dialog, int id)
        {
            mPerson.setGender(Gender.male);
            dialog.dismiss();
            postSelection();
        }
    });
    builder.setNegativeButton(R.string.female, new DialogInterface.OnClickListener()
    {

        @Override
        public void onClick(DialogInterface dialog, int arg1)
        {
            mPerson.setGender(Gender.female);
            dialog.dismiss();
            postSelection(); 
        }
    });

    dialog = builder.create();
    dialog.show();
}
选择完成后调用此方法

public void postSelection(){
getWidgetsRefereces();
customizeLayout();
 loadSpinnerValues();
}

考虑基于事件的执行。如果您想在按下按钮时执行一些代码,请将其连接起来执行。将有问题的代码放在一个可以随时调用的方法中


一般来说,在Android上编程时,需要遵循平台基于事件的特性。传统的程序性顺序思维会让你陷入死胡同。

你必须像这样定制你的对话框界面。 您应该在对话框界面上使用onDismissListener。不要使其匿名

private class MyDialogInterfaceMethod implements DialogInterface.OnClickListener,DialogInterface.OnDismissListener
        {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                                //when user click a button 

            }
            @Override
            public void onDismiss(DialogInterface dialog) {
                // TODO Auto-generated method stub

                //put your code here 


            }

        }
而不是像这样在警报对话框中使用它

    builder.setNegativeButton("CANCEL",new MyDialogInterfaceMethod ()); 

对话框的
discouse()
之后您必须执行什么?我已经更新了我的问题。您还可以对您的AlertDialog实现
OnDismissListener
,并将这些函数放入其中。查看+1编辑问题名称和内容,他可以将这些方法放在dialog之后;