私は方法を持っています:
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
単にループを離れることも許容されます。私はそれを説明することができます。私は見つけることができるすべてを試しましたが、私は機知に富んでいます。