【问题标题】:How do I reference the object an anonymous class is declared in properly?如何正确引用声明匿名类的对象?
【发布时间】:2012-12-20 22:07:49
【问题描述】:

我正在为 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 的对象。

如您所见,我找到了解决方案!菜单按钮 self = this;行。

是否有正确的方法来做到这一点,或者我相当奇怪的解决方案是唯一的方法吗?

【问题讨论】:

    标签: java android anonymous-class


    【解决方案1】:
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        MenuButton button = MenuButton.this;
    });
    

    在匿名内部类中时,this 引用该匿名类实例,因此您必须通过 MenuButton.this 显式指定外部类实例。

    【讨论】:

      【解决方案2】:

      您可以使用MenuButton.this 来引用外部类实例。

      【讨论】:

        【解决方案3】:

        您始终可以使用

        MyClass.this
        

        语法。

        如果有不清楚的地方可以随时参考官方文档here

        【讨论】:

        • 感谢官方文档的链接,一直想知道这样的东西写在哪里!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-04
        • 2019-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多