Ответ 1
Вот странный ответ. Я просто перезапустил свое затмение, и он смотрел на работу. Это может помочь кому-то.
Просто перезапустите eclipse или студию Android
Я получаю "Обязательный атрибут XML" adSize "отсутствует" при запуске приложения. Это написано на экране моего смартфона вместо моего баннера.
Я попробовал разные решения, основанные на стеке (например, xmlns:ads="http://schemas.android.com/apk/res-auto"
вместо xmlns:ads="http://schemas.android.com/apk/libs/com.google.ads"
или вместо xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
), но он не работает.
Вот мой java-код (простой Hello World, чтобы попытаться реализовать баннер):
package com.example.publicite;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Вот мой xml файл:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/libs/com.google.ads"
android:id="@+id/adView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="MyAdUnitId"
ads:loadAdOnCreate="true"
ads:testDevices="TEST_EMULATOR" />
<Button
android:id="@+id/votrescore"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="..." />
</RelativeLayout>
и здесь мой манифест:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.publicite"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="13"
android:targetSdkVersion="13" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<activity
android:name="com.example.publicite.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
Я использую сервисную библиотеку google.
Вот странный ответ. Я просто перезапустил свое затмение, и он смотрел на работу. Это может помочь кому-то.
Просто перезапустите eclipse или студию Android
Попробуйте изменить свою декларацию следующим образом:
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adUnitId="YOUR_AD_UNIT_ID"
ads:adSize="BANNER"/>
---- EDIT ----
Вы также можете попытаться сделать это программно. Просто, вместо элемента AdView
layout, определите LinearLayout
и по коду выполните примерно так:
final AdView adView = new AdView(getActivity());
adView.setAdUnitId("YourId");
adView.setAdSize(AdSize.BANNER);
final LinearLayout adLinLay = (LinearLayout) view.findViewById(R.id.your_defined_linearlayout);
adLinLay.addView(adView);
final AdRequest.Builder adReq = new AdRequest.Builder();
final AdRequest adRequest = adReq.build();
adView.loadAd(adRequest);
У меня была такая же проблема, и я исправил ее с помощью ярлыков xmlns. Я разместил две метки "xmlns: ads" (один для "res-auto" в AdView и другой для "инструментов" в родительском макете). Мне пришлось использовать две метки для "res auto", одну с xmlns: app в FloatingActionButton и другую с xmlns: объявлениями в AdView:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.v7.widget.Toolbar
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="@dimen/fragment_start_margin"
android:background="@drawable/fondo_proyectos"
android:elevation="4dp"
android:gravity="bottom"
android:minHeight="@dimen/toolbar_height">
</android.support.v7.widget.Toolbar>
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/av_bottom_banner"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_inferior_ad_unit_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
/>
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/av_bottom_banner"
android:fitsSystemWindows="true">
<android.support.design.widget.FloatingActionButton
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/av_bottom_banner"
android:layout_alignParentEnd="true"
android:layout_gravity="bottom|end"
android:layout_marginLeft="@dimen/fab_margin"
android:layout_marginRight="@dimen/fab_margin"
android:elevation="4dp"
android:src="@android:drawable/ic_input_add"
android:tint="@android:color/white"
app:fabSize="normal"
app:srcCompat="@drawable/ic_account_circle" />
<include layout="@layout/proyecto_content" />
</android.support.design.widget.CoordinatorLayout>
</RelativeLayout>
У меня такая же проблема.
Решение для меня:
xmlns:ads=""
изменено на
xmlns:ads="http://schemas.android.com/apk/res-auto"
Проблема исправлена для меня путем изменения пространства имен URI
от
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
в
xmlns:ads="http://schemas.android.com/apk/res-auto"
измените, как показано ниже .remove ads: loadAdOnCreate = "true"
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="MyAdUnitId"/>
проверить эту ссылку, он имеет ясный пример
https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals#play
Это происходит, когда eclipse не удалось синхронизировать ваш xml с библиотекой воспроизведения Google, попробуйте очистить проект и перезапустить eclipse
Juste очистите свое приложение!
Сборка → Чистый проект
Сообщение исчезает.
добавить это в манифест андроида:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<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|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />
Android: тема = "@андроид: стиль /Theme.Translucent"
он решает мою проблему, я надеюсь, что он решит вашу проблему:)
Оказывается, вы НЕ МОЖЕТ использовать wrap_content
как размер, поэтому вам нужно указать его размер.
Мои объявления не работали, и после дня поиска в Интернете я изменил свой
android:layout_height="wrap_content"
к
android:layout_height="100dp"
и это устранило проблему.
Постскриптум "match_parent"
работает (у меня есть этот набор для моей ширины)
Проверьте также DEIVCE_ID_EMULATOR, как и в моем коде. У меня есть следующий код из руководства Google:
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
В моем случае я тестировал его на реальном устройстве, чтобы он никогда не появлялся, а просто дал мне сообщение о том, что агитация не установлена. Я подбежал к эмулятору, и решение nkn отлично работает.
Вот мой полный код: В основной деятельности:
AdView adView = (AdView)findViewById(R.id.adView);
AdRequest adRequest = newAdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.build();
adView.loadAd(adRequest);
и мой XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="@string/UNIT_ID"
ads:adSize="BANNER"/>
</LinearLayout>
СЕЙЧАС запустите приложение на своем устройстве и проверьте свой логарифм, так как он отобразит строку: I/Ads: используйте
AdRequest.Builder.addTestDevice("33BE2250B43518CCDA7DE426D04EE232")
to get test ads on this device.
Скопируйте этот идентификатор (РАЗЛИЧИЙ ДЛЯ ВАШЕГО УСТРОЙСТВА) в .addTestDevice следующим образом:
AdView adView = (AdView)findViewById(R.id.adView);
AdRequest adRequest = newAdRequest.Builder()
.addTestDevice("33BE2250B43518CCDA7DE426D04EE232")
.build();
adView.loadAd(adRequest);
И вот как я исправил эту проблему в моем случае.
Надеюсь, что это поможет.
<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adMobBanner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-3940256099942544/6300978111"'enter code here'
android:layout_centerVertical="true" />
Я столкнулся с той же ошибкой. но я не мог это исправить с помощью закрепленного ответа. Я изменил XML, чтобы быть таким.
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId = "ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>
Основные изменения: xmlns:ads="http://schemas.android.com/apk/res-auto"
и ads:adSize="BANNER"
. Я записал экран своего ноутбука при решении этой проблемы. Так что если вам нравятся наглядные иллюстрации, вы можете посмотреть видео на YouTube.