3

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

我该如何做才能让执行等待,直到用户从一个选项中选择一个选项AlertDialog

这是我的代码:

    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.dismiss()我必须执行这个之后:

    // TODO: Show data.

    getWidgetsRefereces();
    customizeLayout();

    loadSpinnerValues();
4

3 回答 3

1

请执行下列操作:

 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();
}
于 2013-07-03T10:35:45.400 回答
1

考虑基于事件的执行。如果您希望在按下按钮时执行某些代码,请连接它来执行此操作。将有问题的代码放在您可以随时调用的方法中。

通常,当您在 Android 上进行编程时,您需要遵守平台的基于事件的性质。传统的程序顺序思维会导致你走入死胡同。

于 2013-07-03T10:39:41.790 回答
0

您必须像这样自定义对话界面。你应该在对话界面上使用 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 ()); 
于 2013-07-03T10:42:42.897 回答