0

私はAndroidからこの例を試しました:メソッドOnClickListener()はタイプViewに対して未定義ですが、 .getC()でエラーが発生します:

error at The method getC() is undefined for the type View.OnClickListener

誰かが私がそれを理解するのを手伝ってくれることを願っています。または、リスナー内で生成された値を取得する別の可能性はありますか?

 View.OnClickListener myListener = new View.OnClickListener() {
        double c;

        // in case you need to use C elsewhere
        public double getC() {
            return c;
        }

        @Override
        public void onClick(View v) {
            // get A and B values
            // then use either
            c = a - b;
            // or I guess use 
            c = c - b;
        }
    };

    myButton.setOnClickListener(myListener);

    int x= myListener.getC();
4

1 に答える 1

0

匿名クラス内で変数やパブリックメソッドを宣言することはできますが、クラスを参照できないため、それらを参照する方法はありません。

内部で宣言されたメンバーとメソッドにアクセスするには、その匿名クラスをネストされたものに変更する必要があります。

MyOnclickListener myListener = new MyOnclickListener();

private final class MyOnclickListener implements View.OnClickListener
{
    double c;

    // in case you need to use C elsewhere
    public double getC()
    {
        return c;
    }

    @Override
    public void onClick(View v)
    {
        // get A and B values
        // then use either
        c = a - b;
        // or I guess use
        c = c - b;
    }
}
于 2012-05-14T10:12:36.243 に答える