我正在阅读admob中介文档,但看到的却很困惑,因为我认为当您使用“ this”时,它是指您所在的活动。它说,他们建议您传入一个Activity实例,例如下面的实例。我以为这是唯一可能的方法,没人知道我将通过的上下文的示例,而不是当前的活动吗?
adView = new AdView(this);
答案 0 :(得分:1)
“我正在阅读admob中介文档,但看到的却很困惑,因为我认为当您使用“ this”时,它是指您所在的活动。“
您略有错误。 this
指的是您当前的对象。来自Java documentation:
在实例方法或构造函数中,
this
是对 当前对象—正在使用其方法或构造函数的对象 叫。您可以从内部引用当前对象的任何成员 实例方法或构造函数,方法是使用this
。
例如,匿名类中的this
将引用对象类:
View view;
view.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// this will refer to View.OnClickListener object.
}
});
我认为这是任何人都知道一个例子的唯一可能方法 我会通过的上下文不是我当前的 活动?
您也可以在Application
类中创建AdView,尽管我从未建议这样做:
public MyApp extends Application {
private AdView mAdView;
...
public void createAdView() {
// this will refer to MyApp which is a context.
mAdView = new AdView(this);
...
// the rest is history
}
}
否则,有人会创建一个Util来生成AdView,但忘记将上下文限制为仅活动:
public AdUtil {
private AdUtil(){}
...
// Here the parameter context can be Application, Activity, etc.
public static AdView createAdView(Context context) {
AdView adView = new AdView(this);
...
return adView;
}
}