2

以下に示すように、Java のビューに OnClick リスナーを割り当てています。

public class MenuButton extends Fragment {
    MenuButton self = this;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
        view.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                MenuButton button = self;
            });
        }
    }
}

メニューボタンへの参照を取得し、それを onTouch メソッドで何かに使用したい (私が考える問題とは何の関係もない)。クラスのメソッド (getApplication() など) を呼び出すことができることはわかっていますが、匿名の OnTouchListener が宣言されているオブジェクトへの参照が特に必要です。

ご覧のとおり、私は解決策を見つけました!MenuButton self = this; ライン。

これを行う適切な方法はありますか、それとも私のやや奇妙な解決策がそれを行う唯一の方法ですか?

4

3 に答える 3

5
@Override
public boolean onTouch(View v, MotionEvent event) {
    MenuButton button = MenuButton.this;
});

匿名の内部クラス内でthisは、その匿名クラスのインスタンスを参照するため、 を介して外部クラスのインスタンスを明示的に指定する必要がありますMenuButton.this

于 2012-12-20T22:09:25.130 に答える
3

MenuButton.this外部クラスのインスタンスを参照するために使用できます。

于 2012-12-20T22:09:09.217 に答える