我想在一个课程中添加一个 ads非页内广告或横幅功能,并从其他课程中访问该功能。
我想在所有Activity类中调用它
我该如何实现?
package com.example....;
import ...
public class classAds{
private InterstitialAd mInterstitialAd;
public void mobileAds()
{
MobileAds.initialize(this,
"ca-app-pub-3940256099942544~3347511713");
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-.............");
}
我尝试了这段代码,但“ this”中的问题未被接受
我也尝试将其更改为
classAds.this
getContext()
getActivity()
答案 0 :(得分:1)
我建议两种方法
1。像这样创建一个单独的Application类
public class ApplicationClass extends Application {
private static ApplicationClass mInstance;
public static Context getContext() {
return mInstance;
}
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
}
}
然后像这样更改您的ClassAds
public class classAds{
private InterstitialAd mInterstitialAd;
public void mobileAds()
{
MobileAds.initialize(ApplicationClass.getContext,
"ca-app-pub-3940256099942544~3347511713");
mInterstitialAd = new InterstitialAd(ApplicationClass.getContext);
mInterstitialAd.setAdUnitId("ca-app-pub-.............");
}
将ClassAds更改为
public class classAds{
private InterstitialAd mInterstitialAd;
public void mobileAds(Activity activity)
{
MobileAds.initialize(activity,
"ca-app-pub-3940256099942544~3347511713");
mInterstitialAd = new InterstitialAd(activity);
mInterstitialAd.setAdUnitId("ca-app-pub-.............");
}
然后在您的Activity类中将方法调用为
ClassAds classAds = new ClassAds;
classAds.mobileAds(this);
答案 1 :(得分:0)
这是缺少context' required while creating the
InterstitialAd`对象的简单情况。
您可以做一件事,非常简单并且可以理解。 这是通用的代码。
public class ClassAds{
private InterstitialAd mInterstitialAd;
private Context mContext;
public ClassAds(Context context){
//this is the constructor of this class
mContext = context;
}
public InterstitialAd getMobileAds(){
mInterstitialAd = new InterstitialAd(mContext);
mInterstitialAd.setAdUnitId("ca-app-pub-.............");
return mInterstitialAd;
}
还根据文档创建您自己的Application类的版本,并且每次应用启动时仅初始化一次SDK。阅读docs
要创建自己的应用程序,请阅读Here
使用您的SDK ID在Aplication类中创建最终的String变量
private static final String _ad_id = "YOUR_ADMOB_APP_ID";
然后在Application类的onCreate
中像这样初始化SDK。
@Override
public void onCreate() {
super.onCreate();
MobileAds.initialize(activity, _ad_id );
}
然后从任何活动或类中像这样使用它。
ClassAds adsObject = new ClassAds(this)//here this is the context Activity
adsObject.getMobileAds();
尽管 AdUnitId 保持不变,但您可以使此类成为单例并在多个“活动”中使用。探索可能性!
如果您错过了,我想您当然没有,here是广告加载的官方指南。
答案 2 :(得分:0)
问题只是上下文! 您可以像这样在Class建设者中传递上下文。 检查以下代码!
public class Interstial_Ads {
private InterstitialAd mInterstitialAd;
Context context;
public Interstial_Ads(final Context context) {
this.context = context;
MobileAds.initialize(context, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
mInterstitialAd = new InterstitialAd(context);
mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
mInterstitialAd.loadAd(new AdRequest.Builder().build());
if (mInterstitialAd.isLoaded()){
mInterstitialAd.show();
}
}
});
}
}
在活动调用中,该类传递主动性上下文。
Interstial_Ads interstialAds = new Interstial_Ads(MainActivity.this);