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

我正在尝试在我的应用上显示广告横幅,而且我似乎遇到了问题。 任何时候我进入活动,应用程序崩溃,并提到一些关于,当我试图加载广告,它是一个空引用。 为什么不,我不积极。

这是adviewxml

<?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> 

以下是使用广告的Java代码:

 //load ads AdView adView = (AdView)findViewById(R.id.bannerAd); AdRequest.Builder request = new AdRequest.Builder(); request.addTestDevice(AdRequest.DEVICE_ID_EMULATOR); adView.loadAd(request.build()); 

这里是logcat:

 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帐户设置,我有这样的横幅设置。

请让我知道,如果你有任何想法。 非常感谢。

Solutions Collecting From Web of "在应用上加载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”。

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

\水库\布局\ activity_main_lauch.xml

\水库\布局-V21 \ activity_main_lauch.xml

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

被接受的解决scheme并没有解决这个问题,因为我的Activity的setContentView()确实在广告代码之前。

但是,有问题的广告是插入到活动布局中的片段布局。 看起来,某种竞争状况正在发生,因为在代码的后面我放置广告代码的机会越多,即使代码与显示屏没什么关系。

我决定把最好的地方放在代码片段的onViewCreated() ,它还没有让我失望。