AlertDialog и предупреждающее сообщение Окно уже сфокусировано

В моем приложении мне нужно получить значение из AlertDialog, которое отображает список. После выбора элемента я изменяю текст кнопки (кнопка, которая отображает AlertDialog), диалоговое окно закрывается, и мне нужно выполнить обработку в onResume().

Но onResume не вызывается, и я получаю предупреждение «Окно уже сфокусировано». Я думаю, причина в том, что я меняю текст кнопки в диалоговом окне, поэтому я уже в окне. Но мне нужно войти в onResume(à . как это сделать?

Диалог предупреждений:

AlertDialog.Builder mBuilder = new AlertDialog.Builder(this);
    mBuilder.setTitle("Type de l'observation");
    mBuilder.setSingleChoiceItems(titles,-1, new DialogInterface.OnClickListener(){
        public void onClick(DialogInterface dialogInterface, int item) {
            mDescriptor.setmObservationValue(
                    mContext.getResources().getStringArray(R.array.post_values)[item]);
            mObservationButton.setText(titles[item]);
            dialogInterface.dismiss();
            return;
        }
    });
    mDialog = mBuilder.create();

Метод onClick: public void onObservationClick(View v) { mDialog.show(); }

и onResume() :

    @Override
protected void onResume() {
    if(!mDescriptor.getmObservationValue().equals(""))
    {
        String value = mDescriptor.getFieldKey();
        Log.v("VALUE : ",value);
        if(value.equals("VentValue"))
        {
            mFieldLayout.setVisibility(View.VISIBLE);
            mUnit.setText("km/h");
        }
        else if(value.equals("PluieValue"))
        {
            mFieldLayout.setVisibility(View.VISIBLE);
            mUnit.setText("mm");
        }   
        else if(value.equals("NeigeValue"))
        {
            mFieldLayout.setVisibility(View.VISIBLE);
            mUnit.setText("mm");
        }
        else if(value.equals("TempValue"))
        {
            mFieldLayout.setVisibility(View.VISIBLE);
            mUnit.setText("°C");
        }
        else if(value.equals("VisValue"))
        {
            mFieldLayout.setVisibility(View.VISIBLE);
            mUnit.setText("m");
        }
        else
        {
            mFieldLayout.setVisibility(View.GONE);
            mUnit.setText("");
        }
    }

person QLag    schedule 01.09.2012    source источник


Ответы (1)


Похоже, вы принудительно вызываете onResume(), но вы не можете этого сделать. Действие не приостанавливается для отображения AlertDialog, поэтому onResume() не вызывается после закрытия диалогового окна. Просто переместите код, который у вас есть в onResume(), в другой метод и вызовите этот метод, когда диалоговое окно закрыто.

Рассмотрите возможность использования OnDismissListener

person Sam    schedule 01.09.2012
comment
Хорошо, на самом деле это очень просто... Но мне кажется странным и жалким, что активность не приостанавливается при отображении диалога. Спасибо ! - person QLag; 01.09.2012