我正在尝试将当前活动的引用传递给对象,但似乎无法找到一个可以轻松完成此操作的方法。以前我能够通过当前上下文的“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);
}
}
似乎很容易解决,但我找不到答案......
非常感谢任何帮助。
答案 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