【发布时间】:2012-03-13 04:28:41
【问题描述】:
我有一个方法:
void someMethod(String someString)
final String[] testAgainst = {...};
....
for(int i = 0; i < testAgainst.length; i++) {
if (someString.equals(testAgainst[i])) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Strings are the same! Overwrite?")
.setTitle("Blah Blah Blah")
.setCancelable(false)
.setPositiveButton("Overwrite", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface di, int which) {
someAction()
}
})
.setNegativeButton("Nah", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface di, int which) {
ESCAPE
}
});
AlertDialog dialog = builder.create();
}
}
doSomeOtherStuff();
}
事情是这样的,如果我的代码达到ESCAPE(即用户决定不覆盖),我想完全退出该方法。我试过了……
- 将
someMethod()更改为返回一个布尔值,然后从否定按钮返回它,但它不会让我这样做,因为它在一个 void 内部方法中。 - 从
ESCAPE抛出异常以被外部捕获,但编译器不允许我这样做,因为DialogInterface.OnClickListener不会抛出。 - 使用
break语句离开for循环,但这也不起作用。
简单地离开for 循环也是可以接受的。我可以解释这一点。我已经尝试了所有能找到的方法,但我已经束手无策了。
【问题讨论】:
标签: java android anonymous-inner-class