这是MainActivity
:
imgModeContrastLeft.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImagePair imp = new ImagePair();
String objId = "sMfSYvBxmX";
imp.downloadImagePairInBackground(this, objId);
}
});
但this
不是MainActivity
。如何在OnClickListener
?
答案 0 :(得分:4)
您可以MainActivity.this
获取MainActivity上下文
答案 1 :(得分:2)
v.getContext()
这是“最好的”方式
public void onClick(View v) {
ImagePair imp = new ImagePair();
String objId = "sMfSYvBxmX";
imp.downloadImagePairInBackground(v.getContext(), objId);
}
它会使它更“便携”,所以如果你移动,决定在另一个类中重用代码,或者更改类名,你就不需要改变它。
你拥有它的方式,this
指的是内部阶级,而不是Activity
Context
答案 2 :(得分:1)
首先,请记住,整个InnerClass绑定到外部类的每个单独对象,但条件是InnerClass不是静态的,并且您也创建了一个InnerClass对象。
现在,只要您需要访问调用InnerClass的对象的引用,语法就是:
OuterClassName.this;
答案 3 :(得分:0)
这是正确的代码:
imgModeContrastLeft.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImagePair imp = new ImagePair();
String objId = "sMfSYvBxmX";
imp.downloadImagePairInBackground(MainActivity.this, objId);
}
});
答案 4 :(得分:0)
正如其他一个答案中所指出的,您可以使用类名限定this
以引用内部类中的特定外部类。但是,这种语法有点模糊,所以我建议更明确(如果也更详细)的方法简单地分配给本地:
final MainActivity mainActivity = this;
imgModeContrastLeft.setOnClickListener(...); // reference "mainActivity"