- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这几天我一直在尝试弄清楚如何向我的项目添加广告。我希望你们能告诉我该怎么做。我试图在第一轮之后(玩家第一次死亡)在他们关闭广告后转换广告;这将使他们能够再次玩游戏。
没有广告出现,并且我收到如下错误:
09-02 17:14:53.825: W/dalvikvm(635): threadid=11: thread exiting with uncaught exception (group=0x40a13300)
09-02 17:14:53.835: E/AndroidRuntime(635): FATAL EXCEPTION: GLThread 75
09-02 17:14:53.835: E/AndroidRuntime(635): java.lang.NullPointerException
09-02 17:14:53.835: E/AndroidRuntime(635): at com.JrodManU.LaserJumper.android.Ad.loadAd(Ad.java:45)
09-02 17:14:53.835: E/AndroidRuntime(635): at com.JrodManU.LaserJumper.android.AndroidLauncher.loadAd(AndroidLauncher.java:26)
09-02 17:14:53.835: E/AndroidRuntime(635): at com.JrodManU.LaserJumper.LaserJumper.loadAd(LaserJumper.java:36)
09-02 17:14:53.835: E/AndroidRuntime(635): at com.JrodManU.LaserJumper.screens.InGameScreen. <init>(InGameScreen.java:51)
09-02 17:14:53.835: E/AndroidRuntime(635): at com.JrodManU.LaserJumper.LaserJumper.create(LaserJumper.java:15)
09-02 17:14:53.835: E/AndroidRuntime(635): at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:236)
09-02 17:14:53.835: E/AndroidRuntime(635): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1505)
09-02 17:14:53.835: E/AndroidRuntime(635): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
我的类(class):
Android启动器
package com.JrodManU.LaserJumper.android;
import android.os.Bundle;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;
import com.JrodManU.LaserJumper.GameEventListener;
import com.JrodManU.LaserJumper.LaserJumper;
public class AndroidLauncher extends AndroidApplication implements GameEventListener {
Ad ad = new Ad();
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
initialize(new LaserJumper(this), config);
}
@Override
public void showAd() {
ad.showAd();
}
@Override
public void loadAd() {
ad.loadAd();
}
@Override
public boolean isShowing() {
return ad.isShowing();
}
@Override
public boolean isLoaded() {
return ad.isLoaded();
}
}
InGameScreen(屏幕类)
package com.JrodManU.LaserJumper.screens;
import com.JrodManU.LaserJumper.LaserJumper;
public class InGameScreen implements Screen {
LaserJumper game;
boolean firstTime;
public InGameScreen(LaserJumper game) {
this.game = game;
game.loadAd();
firstTime = true;
}
@Override
public void render(float delta) {
generalUpdate();
}
private void generalUpdate() {
if(playerDied) {
if(firstTime && game.isLoaded()) {
System.out.println("hi");
game.showAd();
firstTime = false;
while(game.isShowing()) {
//Waiting for the ad to go away..
}
}
}
广告
package com.JrodManU.LaserJumper.android;
import com.JrodManU.LaserJumper.GameEventListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
import com.google.android.gms.ads.AdListener;
import android.app.Activity;
import android.os.Bundle;
public class Ad extends Activity implements GameEventListener{
private InterstitialAd mInterstitialAd;
public static boolean showing;
public static boolean loaded;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("*****");
AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
adRequestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
showing = false;
}
@Override
public void onAdLoaded() {
loaded = true;
}
});
}
public void showAd() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
showing = true;
}
}
public void loadAd() {
AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
mInterstitialAd.loadAd(adRequestBuilder.build());
}
public boolean isShowing() {
if(showing) {
return true;
} else {
return false;
}
}
public boolean isLoaded() {
if(loaded) {
return true;
} else {
return false;
}
}
}
LaserJumper(主类)
package com.JrodManU.LaserJumper;
import com.JrodManU.LaserJumper.screens.*;
import com.badlogic.gdx.Game;
public class LaserJumper extends Game{
InGameScreen inGameScreen;
public Preferences preferences;
public GameEventListener gameEventListener;
@Override
public void create() {
inGameScreen = new InGameScreen(this);
setScreen(inGameScreen);
}
public void changeToInGame() {
inGameScreen = new InGameScreen(this);
setScreen(inGameScreen);
}
public LaserJumper(GameEventListener listener) {
gameEventListener = listener;
}
public void showAd() {
gameEventListener.showAd();
}
public void loadAd() {
gameEventListener.loadAd();
}
public boolean isShowing() {
return gameEventListener.isShowing();
}
public boolean isLoaded() {
return gameEventListener.isLoaded();
}
}
最后是 GameEventListener 接口(interface)
package com.JrodManU.LaserJumper;
public interface GameEventListener {
public void showAd();
public void loadAd();
public boolean isShowing();
public boolean isLoaded();
}
最佳答案
您的插页式广告位于单独的 Activity Ad
内,然后您可以像这样直接实例化它 Ad ad = new Ad();
你永远不应该像这样实例化Android Activity(它们启动Activity的方式是使用Intents),因为Activity必须遵守Activity lifecycle Android 将通过 Activity 生命周期方法进行调用。
结果是广告 Activity 的 onCreate() 方法不会被调用,并且您的 InterstitialAd 从未被实例化,这会导致稍后出现 NPE。
<小时/>解决方案建议:
关于java - 我做错了什么,如何添加插页式广告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25632881/
我刚刚更新了 Ruby,现在我在尝试启动 compass 时遇到以下错误: Encoding::CompatibilityError on line ["28"] of /usr/local/Cell
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 6 年前。
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在尝试在我的 iOS 应用程序中开发可折叠/ Accordion 式的功能。这将是您可以在网站上找到的典型 FAQ 类型功能。我想点击标题,然后显示详细信息。 因为这是帮助部分,只有几个项目,我认
我正在尝试设计一个基于 REST 的 Web 服务来与我正在开发的农场动物管理系统进行交互。 为了详细说明问题,我收藏了动物 属于一个农场。每只动物都有自己的信息——例如姓名、身份证号、品种年龄等。因
我有 3 种不同的表单,其中复选框数量不同,每个部分基本上代表一个表单,因此当用户选择该部分中的复选框时,它会显示他们在该部分的总金额中 checkout 了多少 HTML
我有一份 32 页的 PDF 版家谱。与其将家谱全部放在一个非常大的 PDF 页面上(这是我想要的),不如将其格式化为一组 8 个单独的美国信纸大小的页面应该在整个宽度上缝合; 4 行这样就完成了树。
指SASS implementation for Java? : 在 Maven 目标编译包中自动编译 compass-style.org 样式表的最佳方法是什么? 我不想发送太多的自编译库,也不想通
鉴于以下 XAML... 我正在寻找一种绑定(bind) ComboBox、Button 和 Command 的方法,以便当 ComboBox 的值更改时,在 Command 上调用 CanExe
在玩具应用程序中,我有一个显示所有帖子标题的“帖子”模板。当您单击每个标题时,我不想直接进入“显示” View ,而是直接内联展开该帖子的其余内容。 我考虑过让 postRoute 重用 postsR
我需要一些使用 Twitter Bootstrap 或其他响应式框架的自定义 Swagger-UI 实现。需要在我的移动设备上使用这样的 UI 测试我的 API,但 swagger-ui 不能很好地扩
我正在做一个项目,我真的在尝试编写面向对象的 JavaScript 代码。我刚刚开始阅读Douglas Crockford's JavaScript: The Good Parts我很快开始意识到用
在 C# 中,我通过执行以下操作来加密文本数据(请注意我正在以 block ( block )的形式加密数据): public string EncryptData(string pu
我正在构建一个社交网站,该网站将向全世界公开 REST API (WCF WebAPI),以便任何开发人员都能够为该网站创建客户端应用程序、将其与其他服务集成等。 我想为 API 实现 Faceboo
我是一名优秀的程序员,十分优秀!