如何传递对当前活动的引用

时间:2011-03-17 09:10:33

标签: java android

我正在尝试将当前活动的引用传递给对象,但似乎无法找到一个可以轻松完成此操作的方法。以前我能够通过当前上下文的“this”引用来做这个简单的传递。然后我将我的活动从实现OnClickListener改为创建OnClickListener对象,以便我可以将其作为参数传递。这是当我在单击按钮后尝试创建对象时遇到麻烦,这意味着我不能再使用“this”传递活动,因为“this”现在是OnClickListener的引用。

public class MyActivity extends Activity {
    private Object mObject;

    private OnClickListener mListener = new OnClickListener() {
        public void onClick(View v) {
            Object mObject = new Object(this);
        }
    }
}

public class Object {
    private Activity mActivity;
    public Object(Activity a) {
        mActivity = a;
        mActivity.setContentView(R.layout.layout);
    }
}

似乎很容易解决,但我找不到答案......

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

你是对的,this现在引用了OnClickListener,因为它引用了当前的类,而你正在匿名类中工作。您可以通过传递mActivity.this

来引用外部活动
Object mObject = new Object(mActivity.this);

顺便说一下:我想我会重命名mActivity类,因为普通的类命名约定是以大写字母开头。

答案 1 :(得分:3)

mActivity.添加到this

Object mObject = new Object(mActivity.this);

在您的上下文中,this引用了一个侦听器实例,但您需要外部类的实例,因此您需要将类名添加到this