来自.NET环境,我现在想了解Dialogs如何在Android中工作。
在.NET中,调用时MessageBox.Show(...)会创建并显示一个弹出对话框。在对Show的调用中,我可以指定在弹出窗口中应该使用哪些按钮,例如:
DialogResult myDialogResult = MessageBox.Show("My text here", "My caption here", MessageBoxButtons.YesNoCancel);
如您所见,在弹出窗口中按下按钮时,对Show的调用将返回DialogResult,通知我单击了哪个按钮。请注意,在.NET中,执行将在对其进行调用的行处暂停Show(...),因此在按下按钮时它可以返回该值。
如果我在上面的示例中按“否”,则myDialogResult将等于
myDialogResult == DialogResult.No
由于我发现使用/创建弹出窗口的.NET方法非常简单直观,因此我也希望在Android中使用这种创建弹出窗口的方法。
因此,问题是,是否有人知道如何像一样“暂停执行” MessageBox.Show,然后每当按下Button(然后对话框消失)时返回一个值?
编辑1
更清楚一点:
我需要暂停执行并等待,直到用户选择了一个按钮以单击弹出窗口。调用后显示对话框的代码取决于在对话框中单击的按钮。
这就是为什么我不能使用Erich和Alex的建议的原因,因为按照下面的建议在onClick方法中编写代码是行不通的。原因是我无法继续执行“正常执行”。让我举个例子:
让我举个例子:
int nextStep = 0; // this variable will not be reached from within the onClick-methods
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Hello!")
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
nextStep = 1; // *** COMPILER ERROR!! ***
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
nextStep = 2; // *** COMPILER ERROR!! ***
}
})
.create().show();
if (nextStep == 1)
{
// then do some damage
}
else if (nextStep == 2
// dont do damage
如果我希望执行依赖于弹出窗口中的选择,那么我将不得不以某种方式使nextSteponClick方法中的“正常执行”(在本例中为)中的所有变量可用,这对我来说听起来像是“地狱”。
编辑2
另一个明显的示例是弹出窗口,询问“您是否要继续”,并带有选项“是”和“否”。
如果用户按下“是”,则应中止整个方法,否则应继续执行。您如何很好地解决呢?
慕标琳琳
忽然笑
相关分类