1

在我的应用程序中,我需要从显示列表的 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("");
        }
    }
4

1 回答 1

1

看起来你是在强行调用 onResume(),但你不能这样做。Activity 不会暂停以显示 AlertDialog,因此在 Dialog 关闭后不会调用 onResume()。只需将 onResume() 中的代码移动到另一个方法中,并在对话框关闭时调用此方法。

考虑使用OnDismissListener

于 2012-09-01T16:59:02.533 回答