Java 在应用程序上加载AdMob广告的问题

Java 在应用程序上加载AdMob广告的问题,java,android,xml,admob,adview,Java,Android,Xml,Admob,Adview,我试图在我的应用程序上显示一个广告横幅,但我似乎遇到了一个问题。每当我进入活动时,应用程序就会崩溃,并在我试图加载广告时提到它是一个空引用。我不确定为什么 以下是adview的xml: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android

我试图在我的应用程序上显示一个广告横幅,但我似乎遇到了一个问题。每当我进入活动时,应用程序就会崩溃,并在我试图加载广告时提到它是一个空引用。我不确定为什么

以下是adview的xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/gameLayout">

    <com.google.android.gms.ads.AdView
        android:id="@+id/bannerAd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        ads:adSize="BANNER"
        ads:adUnitId="MY_ADUNITID" />

</FrameLayout>
以下是日志:

09-21 21:55:39.300: E/AndroidRuntime(1168): FATAL EXCEPTION: main
09-21 21:55:39.300: E/AndroidRuntime(1168): Process: com.project.llb, PID: 1168
09-21 21:55:39.300: E/AndroidRuntime(1168): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.twentytwentythree.sab/com.twentytwentythree.sab.runGraphics}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.AdView.loadAd(com.google.android.gms.ads.AdRequest)' on a null object reference
09-21 21:55:39.300: E/AndroidRuntime(1168):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)
09-21 21:55:39.300: E/AndroidRuntime(1168):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2653)
09-21 21:55:39.300: E/AndroidRuntime(1168):     at android.app.ActivityThread.access$800(ActivityThread.java:156)
09-21 21:55:39.300: E/AndroidRuntime(1168):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355)
09-21 21:55:39.300: E/AndroidRuntime(1168):     at android.os.Handler.dispatchMessage(Handler.java:102)
09-21 21:55:39.300: E/AndroidRuntime(1168):     at android.os.Looper.loop(Looper.java:157)
09-21 21:55:39.300: E/AndroidRuntime(1168):     at android.app.ActivityThread.main(ActivityThread.java:5872)
09-21 21:55:39.300: E/AndroidRuntime(1168):     at java.lang.reflect.Method.invoke(Native Method)
09-21 21:55:39.300: E/AndroidRuntime(1168):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:852)
09-21 21:55:39.300: E/AndroidRuntime(1168):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:668)
09-21 21:55:39.300: E/AndroidRuntime(1168): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.AdView.loadAd(com.google.android.gms.ads.AdRequest)' on a null object reference
09-21 21:55:39.300: E/AndroidRuntime(1168):     at com.twentytwentythree.sab.runGraphics.onCreate(runGraphics.java:94)
09-21 21:55:39.300: E/AndroidRuntime(1168):     at android.app.Activity.performCreate(Activity.java:5312)
09-21 21:55:39.300: E/AndroidRuntime(1168):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111)
09-21 21:55:39.300: E/AndroidRuntime(1168):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2552)
09-21 21:55:39.300: E/AndroidRuntime(1168):     ... 9 more
以下是androidmanifest中的代码:

<meta-data android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
    <activity
        android:name="com.google.android.gms.ads.AdActivity"
        android:configChanges="keyboard|keyboardHidden|orientation" >
    </activity>

现在我使用addTestDevice方法,因为我假设这是我需要使用的,因为我的应用程序还没有上市。我有我的admob帐户设置,我有这样的横幅设置


如果你有任何想法,请告诉我。非常感谢

R.id.bannerAd在您为活动/片段设置的内容中不可用。 致电前:

AdView adView = (AdView)findViewById(R.id.bannerAd);
你一定打过电话

setContentView(R.layout.MyLayoutContainingBannerAd);

请检查您是否包括-
在gradle中编译'com.google.android.gms:play services ads:8.4.0'。

我遇到了类似的问题。当我仔细检查资源文件时,我的活动有两个资源文件:

\res\layout\activity\u main\u lauch.xml

\res\layout-v21\activity\u main\u lauch.xml

我正在修改单个文件,因此它抛出了错误。
当我在两个文件中应用更改时,它开始工作。

接受的解决方案没有为我解决这个问题,因为我的活动的
setContentView()
确实在ad代码之前

然而,所讨论的广告是片段布局中的,正在插入活动的布局中。似乎某种竞赛条件正在发生,在代码中我放置广告代码的时间越晚,我成功的机会就越大,尽管代码与显示几乎没有关系


我决定把代码放在片段的
onViewCreated()
,在那里我还没有失败。

请发布完整的xml文件和logcat输出。@juniorbuckridge我添加了你要求的内容。很抱歉。你确定你在一个有谷歌播放服务的设备上运行这个应用程序吗?@JuniorBuckeridge我想是的。我用的是HTC one m8。对不起,我对这一切都不熟悉。我不知道它可以在某些应用程序上使用,而在其他应用程序上不可用。不应该是“AdRequest.Builder request=new-AdRequest.Builder();”是“AdRequest request=new-AdRequest.Builder();”?在这样做之后,现在我有一个框显示“android manifest.xml中缺少android.configChanges的AdActivity”在我的清单中,我将元数据标记设置为com.google.android.gms.version,该活动的名称为com.google.android.gms.ads.AdActivity,并将更改配置为键盘|键盘隐藏|方向。不知道问题出在哪里。你需要发布你的AndroidManifest,但听起来你还没有指定AdaActivity所需的所有配置更改。将键盘|键盘隐藏|方向|屏幕布局| uiMode |屏幕大小|最小的屏幕大小添加到我的配置更改中,现在就可以使用了。该方法应该是setContentView()不是setContent()对吗?
setContentView(R.layout.MyLayoutContainingBannerAd);