3 回答
TA贡献1833条经验 获得超4个赞
this对应于使用它的对象。onSuccess是一个OnSuccessListener类的方法,因此this指的是OnSuccessListener。您需要使用ActivityName.this. 例如,如果您的活动名称是MainActivity,则
@Override
public void onSuccess(Location location) {
if (location == null || !checkLocationPermission(MainActivity.this)){
TA贡献2039条经验 获得超7个赞
当您使用匿名内部类(例如侦听器)并使用 时this,它指的是匿名内部类,因为那是您当前的位置。
例如,使用 OnClickListener:
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//"this" here will refer to the OnClickListener instance you create
}
}
没有什么是用this参数“创建”的。它是对当前封闭类的直接引用。如果需要引用Activity,可以使用:
ActivityClassName.this
只要你在内部类而不是静态类中。
如果您使用 lambda(仅适用于 API 24+):
view.setOnClickListener((v) -> {
//"this" will reference your Activity because there's no inner class anymore
}
TA贡献1816条经验 获得超4个赞
thethis指的是直接封闭类的对象。所以,如果你有一些interface或class作为函数的参数,我们通常这样做:
functionThatTakesInterfaceOrClassAsArgument( new TheInterfaceOrClass {
@Override
public void someMethod () {
// if you use `this` here, it refers to the object of `TheInterfaceOrClass`
}
});
如果要使用与封闭类(但不是直接封闭类)对应的对象,请使用 <className>.this
因此,如果封闭的名称Activity是MyActivity,则需要使用MyActivity.this.
添加回答
举报