2

いくつかのパラメーターを受け入れる静的メソッドがあります。メソッド内で新しいオブジェクトを作成し、それに新しいリスナーをアタッチしています。問題は、リスナー ブロックが外側の静的メソッド変数にアクセスする必要があることですが、それらを参照する方法がわかりません。これを非静的メソッドで実現する方法は知っていますが、静的メソッドでは実現できません。

コードは次のとおりです。

v.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                case MotionEvent.ACTION_UP:             
                    ((Activity)*context*).startActivityForResult(*intent*, 0);
                    break;
                }

                return true;
            }
        });

アスタリスクで囲まれたコンテキスト変数とインテント変数は、静的メソッドに渡されるオブジェクトです。OnTouchListener は内部ブロックであるため、これらのオブジェクトを認識しません。どうすればそれらを参照できますか?

4

1 に答える 1

2

リスナーを作成する前に、静的メソッドのパラメーターを final として宣言するか、渡された引数を静的メソッドの final ローカル変数に割り当てます。匿名クラス定義内から最終参照を使用できます。

于 2012-09-02T16:05:03.063 に答える