我编写了一个名为“Trumple Run”的安卓应用程序。就像名字说的那样,这是一个跳跃和运行游戏,我想尽快发布它。在此之前,我想实现AdMob的间隙广告。我遵循了广告实现的官方指南,但当我试图显示添加时,应用程序总是崩溃。以下是我的MainActivity(信息:我删除了与问题无关的代码;方法addzeigen()是从另一个类调用的)
public class Main_activity extends Activity {
private InterstitialAd mInterstitial;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //Fullscreen
DisplayMetrics metrics = getResources().getDisplayMetrics(); //Display größe herausfinden
V.Bildbreite = metrics.widthPixels;
V.Bildhöhe = metrics.heightPixels;
addladen();
V.v = new View(this);
setContentView(V.v);
}
public void addladen(){
mInterstitial = new InterstitialAd(this);
mInterstitial.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
AdRequest request = new AdRequest.Builder().build();
mInterstitial.loadAd(request);
}
public void addzeigen(){
if(mInterstitial.isLoaded()){
mInterstitial.show();
addladen();
}
}
我查看了StackTrace以查找问题的原因,这两行指示填隙尚未示例化(返回空值)。
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.android.gms.ads.InterstitialAd.isLoaded()' on a null object reference
因此,我在addladen()方法中添加了一个空值检查器来防止崩溃。
public void addzeigen(){
if(mInterstitial != null && mInterstitial.isLoaded()){
mInterstitial.show();
addladen();
}
}
但是为什么我的Interstitial对象是空的?我在addladen()方法中没有以正确的方式示例化它吗?我已经在互联网上搜索了很长时间,但没有找到解决方案,并询问了AdMob支持,但他们说我应该在这里问,因为这是一个实现问题。我必须如何修改我的代码,以确保我的Interstitial不是空的?如果你能帮助我,我将非常高兴。
1条答案
按热度按时间lb3vh1jj1#
打开应用程序时创建应用程序,立即加载
}然后创建类检查加载和打开应用程序时发生的异常
}创建接口侦听器以方便调用
},最后,在您想要显示的任何位置运行此代码