2

我将 OnClick 侦听器分配给 Java 中的视图,如下所示:

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 的对象的引用。

如您所见,我找到了解决方案!菜单按钮 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 回答
2

您始终可以通过使用

MyClass.this

句法。

如果有不清楚的地方,您可以随时参考这里的官方文档。

于 2012-12-20T22:18:43.003 回答