1

私のアプリでは、リストを表示するAlertDialogから値を取得する必要があります。項目を選択した後、ボタンのテキスト(AlertDialogを表示するボタン)を変更すると、ダイアログが閉じられ、onResume()で処理を行う必要があります。

しかし、onResumeが呼び出されず、「ウィンドウはすでにフォーカスされています」という警告が表示されます。原因は、ダイアログからボタンのテキストを変更したため、すでにウィンドウが表示されているためだと思います。しかし、私はonResume(à。それを行う方法は?

AlertDialog:

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 に答える