我正在开发一个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();
答案 0 :(得分: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();
}
答案 1 :(得分:1)
考虑基于事件的执行。如果您想在按下按钮时执行某些代码,请将其连线以执行此操作。将问题中的代码放在您可以随时调用的方法中。
通常,当您在Android上进行编程时,您需要遵循平台的基于事件的特性。传统的程序性顺序思维将导致你走向死胡同。
答案 2 :(得分: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 ());