これは私のショーダイアログコードです。
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case 0:
return new AlertDialog.Builder(this)
.setIcon(R.drawable.ic_launcher)
.setTitle("Select Reminder which you want to delete")
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton)
{
Toast.makeText(getBaseContext(), "OK clicked!", Toast.LENGTH_SHORT).show();
check = 1;
}
}
)
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton)
{
Toast.makeText(getBaseContext(), "Cancel clicked!", Toast.LENGTH_SHORT).show();
check = 2;
}
}
)
.setMultiChoiceItems(items, itemsChecked,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
Toast.makeText(getBaseContext(), items[which] + (isChecked ? " checked!":" unchecked!") + which, Toast.LENGTH_SHORT).show();
}
}
).create();
}
return null;
}
これは私が呼び出す関数です。
public void show()
{
showDialog(0);
if(check == 1)
{
Toast.makeText(this, "ok" + check, Toast.LENGTH_LONG).show();
}
else if (check == 2)
{
Toast.makeText(this, "Cancel" + check, Toast.LENGTH_LONG).show();
}
}
私は、「showDialog(0);」ということが起こっていることから混乱しているビットの問題に直面しています。関数はうまく機能しますが、「OK」ボタンを押すとダイアログが消え、「OK」ボタンのonclicklistenerに書かれたトーストだけが表示されますが、「showDialog(0);」の後に書かれたコード 別のトーストを表示するには、到達不能のようなものです。変数「check」(グローバル) を意味します。その値は、「ok」および「cancel」ボタンの onclicklisteners に 1 または 2 を設定し、「showDialog(0」の後に if-else 条件で使用します。 );" 別のトーストを表示しますが、関数「show」は if-else 条件をチェックせずに終了します。ここで実際に何が起こっているのか理解できませんでしたか?