Admob广告未显示

3
我制作了一个简单的应用并添加了广告,但它在设备上没有显示。
我的代码中没有错误:
XML 页面:
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:ads="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/RelativeLayout1"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".MainActivity" 
 >

        <com.google.android.gms.ads.AdView
    xmlns:app="http://schemas.android.com/apk/libs/com.google.ads"
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="66dp"
    ads:adSize="BANNER"
    ads:adUnitId="ad_ip" >
    </com.google.android.gms.ads.AdView>
    </RelativeLayout>

清单文件:

 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" ></uses-permission>    


 <meta-data
android:name="com.google.android.gms.version"
android:value="4.3.23" />

<activity android:name="com.google.android.gms.ads.AdActivity"                
 android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" /> 

你能展示你的清单吗? - Opiatefuchs
1
请把以下与编程有关的内容从英语翻译成中文,并仅返回翻译后的文本:还有一个简单的问题:您是否连接到互联网?因为如果没有连接,您将看不到广告视图。 - Opiatefuchs
@Opiatefuchs :) 当然了,但问题可能来自Admob广告本身吗? - abdullatif morsi
请添加加载广告的代码。 - donfuxx
1
使用GMS AdMob,您现在必须以编程方式加载广告,请参见https://developers.google.com/mobile-ads-sdk/docs/admob/android/play-migration和@Opiatefuchs的答案。 - donfuxx
显示剩余7条评论
4个回答

2

一开始我也犯了同样的错误,只使用了xml文件而没有在Activity中加载视图。因此,请将以下代码放入Activity中:

     AdView adView = (AdView)this.findViewById(R.id.adView);
     AdRequest adRequest = new AdRequest.Builder().build();
     adView.loadAd(adRequest);

我添加了代码,但是这次应用在我的手机或模拟器上没有运行。 - abdullatif morsi

1

您在广告视图中导入了错误的xmlns属性(它指的是旧版AdMob):

<com.google.android.gms.ads.AdView
xmlns:app="http://schemas.android.com/apk/libs/com.google.ads"

您应该仅使用以下内容,这是指Google Play Admob:

xmlns:ads="http://schemas.android.com/apk/res-auto"

==> 移除错误的 xmlns 属性


日志中有什么?我的意思不仅仅是错误...是否有来自Admob的警告/信息?Admob会在日志中告诉您何时出现问题。 - donfuxx
你广告实际上是在哪里加载的?我的意思是你在Activity中有像adView.loadAd(adRequest);这样的东西吗? - donfuxx
我在图形布局中收到了以下错误信息:com.google.android.gms.ads.AdView无法实例化。 - abdullatif morsi
请提供logcat中的完整堆栈跟踪信息,可能有多种原因导致failed to instantiate - donfuxx

1

我认为问题在这里

 <com.google.android.gms.ads.AdView
    xmlns:app="http://schemas.android.com/apk/libs/com.google.ads"
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="66dp"
    ads:adSize="BANNER"
    ads:adUnitId="ad_ip" >

1)xmlns属性应该是这样的,在我的情况下,我已经将其放置在xml文件的根标记中。

        xmlns:ads="http://schemas.android.com/apk/res-auto"

2) 检查一下,您是否已从AdMob账户中获取了实际的adUnitId。

希望这可以帮助您,如果有任何进一步的问题,可以问。


它没有起作用,我在图形布局中发现了这个错误:com.google.android.gms.ads.AdView无法实例化。 - abdullatif morsi
请查看已编辑的答案。我已更改第一点。我认为现在错误将得到解决。 - Programmer
但是这是相同的代码,我尝试过了,仍然不起作用,我需要在Java文件中添加任何代码吗? - abdullatif morsi
谢谢,它起作用了,我必须使用新版的Eclipse。 - abdullatif morsi
你在开玩笑吧?这与Eclipse版本无关。即使在Eclipse Indigo中,Android和Admob也能正常工作!@abdullatifmorsi - donfuxx
显示剩余2条评论

0

试试这个

XML:

       <com.google.ads.AdView
        android:id="@+id/ad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="66dp"
        ads:adSize="BANNER"
        ads:adUnitId="your key ID"
        ads:loadAdOnCreate="true"/>

请在您的清单文件中添加以下代码:
 <activity
            android:name="com.google.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />

希望这能对你有所帮助..


我收到了这条消息(错误:在包中找不到属性“loadAdOnCreate”的资源标识符 - abdullatif morsi
错误来自于这个属性:ads:loadAdOnCreate="true"。 - abdullatif morsi
1
他正在使用Google Play服务库,但您的示例来自旧版AdMob SDK。 - Opiatefuchs
1
是的,他可以,但不能使用导入的AdMob库。而且,Google Play服务正在取代旧的AdMob SDK,因此建议使用Play服务。 - Opiatefuchs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接