1
boolean buttonflag=false;
        Editbutton.setOnClickListener( new OnClickListener()
        { 


            @Override
            public void onClick( View v )
            {
               buttonflag=true;

             }
        }

エラーimgetingは、「別のメソッドで定義された内部クラス内の非最終変数ボタンフラグを参照できません」です。編集ボタンを押したときにボタンフラグをtrueにします。理由を説明できますか。そしてこの問題の修正?

4

2 に答える 2

3

エラーメッセージは非常に単純です。は最終版ではないため、匿名クラスbuttonflagではアクセスできません。OnClickListener2つの可能な解決策

  1. ボタンフラグをフィールドにする
  2. 最終的にします。ただし、それを変更することはできず、1次元配列アプローチを選択する必要があります。

    final boolean[] buttonflag=new boolean[]{false};
    Editbutton.setOnClickListener( new OnClickListener(){ 
       @Override
       public void onClick( View v ){
         buttonflag[0]=true;
       }
    }
    
于 2012-04-26T18:35:14.930 に答える
1

この場合、フィールドにする必要があります。もう1つの@Robinは、問題を解決するための2つのアプローチを正しく示していますが、これは複数回呼び出されるコールバックメカニズムであるため(結局のところボタンのコールバックです)、ローカル変数はほとんど役に立ちません。メソッドが呼び出される前にスコープから外れる可能性があります。

失敗することはありませんが、設定されている値はコードの他の部分からアクセスできなくなるため、ほとんど目的を果たしません。ボタンが押されたときに何らかの状態を設定しようとしていると思います。したがって、表示されたコードを含むメソッドが終了したときにアクセスできるように、その状態をフィールドとして保存する必要があります。

于 2012-04-26T19:14:55.387 に答える