Android: после закрытия AlertDialog активность, кажется, теряет фокус - PullRequest
1 голос
/ 20 мая 2011

У меня есть действие с кнопкой, нажмите кнопку, чтобы отобразить 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 ...
    }
}

Извините, я не могу опубликовать изображение: (

После нажатия на кнопку «Показать» в «Деятельности» появляется диалог AlertDialog.После нажатия на кнопку «ОК» на AlertDialog, AlertDialog исчезает, НО действие не может получать никаких прикосновений.

Если я нажимаю кнопку «НАЗАД» на эмуляторе, то действие может снова получать прикосновенияи с тех пор он будет работать достаточно хорошо, например, снова нажмите кнопку «Показать», а затем снова нажмите «ОК», после того, как AlertDialog исчезнет, ​​действие в порядке, чтобы получать прикосновения без другого нажатия на кнопку «НАЗАД» наэмулятор.

Итак, кто-нибудь может сказать мне, как решить эту проблему (действие не может получать прикосновения в первый раз)?

TIA

Ответы [ 2 ]

1 голос
/ 20 мая 2011

удалить new AlertDialog.Builder(this).create().show();

из вашего кода. Это будет работать абсолютно нормально.

1 голос
/ 20 мая 2011

Правильно ли работает кнопка «Отмена»? Т.е. правильно ли работает Задание после того, как вы нажали на него?

Я заметил эту разницу в вашем коде:

builder.setPositiveButton("OK", new AlertDialog.OnClickListener()

builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener()

В первой строке используется AlertDialog.OnClickListener, а во второй - DialogInterface.OnClickListener. Я только что проверил свой код и все мои диалоги используют DialogInterface.OnClickListener. Я не уверен, имеет ли это какое-то значение, но, возможно, стоит попробовать DialogInterface.OnClickListener с вашей кнопкой «ОК».

...