的方法我有一個方法:打破了由匿名內部類
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()
返回一個布爾值,然後從負按鈕返回,但它不會讓我,因爲這是一個無效的內部方法中。 - 拋出異常
ESCAPE
被外部抓到,但編譯器不會讓我因爲DialogInterface.OnClickListener
不拋出。使用break
聲明離開for
循環,但這也不起作用。
簡單地離開for
循環也是可以接受的。我可以解釋這一點。我試過了我能找到的所有東西,而且我在智慧的結尾。
根據您的建議,是否可以在'someMethod'中聲明'shouldCancel'作爲變量?還是必須在一個單獨的課堂?另外,'Handler'怎麼會比AlertDialog更受歡迎呢? – gobernador 2012-03-13 04:43:56
爲了回答我自己的問題,'shouldCancel'必須封裝在類中。這允許我在匿名內部類中修改它。 – gobernador 2012-06-04 17:07:37