У меня есть действие с помощью кнопки, нажмите кнопку, чтобы показать AlertDialog, который отлично работает. Но после того, как я нажму кнопку "ОК" или "Отмена" на AlertDialog, AlertDialog исчезнет по желанию, но странно, что:
После того, как AlertDialog исчезнет, активность перестает фокусироваться, это означает, что он больше не может получать никаких касаний.
Вот код:
protected Dialog onCreateDialog(int id, Bundle args)
{
new AlertDialog.Builder(this).create().show();
Dialog dialog = null;
switch(id)
{
case...
break;
case ID_DIALOG2:
AlertDialog.Builder builder = new AlertDialog.Builder(ControlDialog.this);
builder.setTitle("Prompt");
builder.setMessage("Are you sure to quit?");
builder.setPositiveButton("OK", new AlertDialog.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
Log.e("AlertDialog", dialog.toString()+ " " + which);
// do something else
dialog.dismiss(); // even without dismiss(), the AlertDialog can disappear too.
//ControlDialog.this.dismissDialog(ID_DIALOG2); // doesn't work either
// dialog.cancel(); // doesn't work either
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
Log.e("AlertDialog", dialog.toString()+ " " + which);
// do something else
dialog.dismiss();
}
});
dialog = builder.create();
//dialog.show();
break;
}
return dialog;
}
protected void onPrepareDialog(int id, Dialog dialog)
{
switch(id)
{
case ...
break;
case ID_DIALOG2:
((AlertDialog)dialog).setTitle("Title");
((AlertDialog)dialog).setMessage("Simple Information");
break;
}
}
public void onClick(View v)
{
switch(v.getId())
{
case R.id.show_button:
this.showDialog(ID_DIALOG2, null);
break;
case ...
}
}
Извините, я не могу опубликовать изображение: (
После нажатия кнопки "Показать" в Activity появляется AlertDialog. После нажатия кнопки "ОК" на AlertDialog, AlertDialog исчезает. НО, Активность не может быть затронута.
Если я нажму кнопку "НАЗАД" эмулятора, то активность может снова получить штрихи, и с этого момента она будет работать неплохо, например. Нажмите кнопку "Показать" еще раз, а затем снова нажмите "ОК" , после того, как AlertDialog исчезнет, активность активна, чтобы получать штрихи без другого нажатия кнопки "BACK" эмулятора.
Итак, может ли кто-нибудь сказать мне, как решить эту проблему (активность не может получить штрихи в первый раз)?
ТИА
Правильно ли работает кнопка "Отмена"? то есть, действует ли действие правильно после его нажатия?
Я заметил эту разницу в вашем коде:
builder.setPositiveButton("OK", new AlertDialog.OnClickListener()
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
Первая строка использует AlertDialog.OnClickListener
, а вторая использует DialogInterface.OnClickListener
. Я только что проверил свой код, и все мои диалоги используют DialogInterface.OnClickListener
. Я не уверен, что это имеет какое-то значение, но, возможно, стоит попробовать DialogInterface.OnClickListener
с помощью кнопки "ОК".
удалить new AlertDialog.Builder(this).create().show();
из вашего кода. Он будет работать абсолютно нормально.
new AlertDialog.Builder(this).create().show();
, Я не уверен, почему это там, но это может вызвать проблемы.