【问题标题】:Pass in the object a java class is embedded in as a parameter将嵌入 java 类的对象作为参数传入
【发布时间】:2011-02-09 12:50:57
【问题描述】:

我正在构建一个 android 应用程序,它有一个列表视图,在列表视图中,一个点击监听器,包含一个 onItemClick 方法。所以我有这样的事情:

public class myList extends ListActivity {
    @Override
public void onCreate(Bundle savedInstanceState) {
        getListView().setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
            /* Do something*/
        }
    }
}

通常,这可以正常工作。然而,很多时候我发现自己需要使用外部类作为上下文来执行应用程序。到目前为止,我使用过:

parent.getContext();

这样做,但我想知道,这是一个坏主意吗?我真的不能打电话:

super

因为它不是真正的子类,只是一个嵌入式子类。那么有没有更好的方法,或者这被认为是可靠的?还有,如果方法对了,如果嵌入的方法没有获取外部类的参数怎么办?

谢谢。

【问题讨论】:

    标签: java android class inner-classes


    【解决方案1】:

    如果我正确理解了您的问题,您想从匿名内部类中调用外部类,对吗?为此,请使用以下语法:

    myList.this.getContext();
    

    来自匿名内部类的onItemClick 方法。这是为内部类定义的特殊语法,用于访问包含它的外部类的实例。

    【讨论】:

      【解决方案2】:

      在匿名内部类中,您可以通过 EnclosureClass.this 获取外部类的句柄。有关信息,请参阅here。 总而言之,您可以在 onItemClick() 等中使用 myList.this.getContext()。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多