标签: adview

以编程方式设置时,必须在loadAd之前设置广告尺寸和广告单元ID

我不知道这里发生了什么,但我试图通过下面的代码动态设置我的广告单元ID,并将其从XML中删除但仍然得到错误:

必须在调用loadAd之前设置广告尺寸和广告单元ID.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
       <com.google.android.gms.ads.AdView
            android:id="@+id/adView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            ads:adSize="SMART_BANNER">
        </com.google.android.gms.ads.AdView>
Run Code Online (Sandbox Code Playgroud)

    AdView mAdView = (AdView) rootView.findViewById(R.id.adView);
    mAdView.setAdUnitId(getEvent().getAdMobUnitId());
    AdRequest adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);
Run Code Online (Sandbox Code Playgroud)

java android admob adview

34
推荐指数
2
解决办法
2万
查看次数

如何知道AdMob广告是否已加载

我的Andorid应用程序离线和在线工作.它在在线模式下显示广告.在它处于离线模式并且用户打开互联网连接的情况下,我想知道广告是否已经加载.如果没有,那么我会加载一个新广告.我查看了AdMob API(AdView类)但无法找到执行此操作的内容.

AdListener根据@Hounshell的回答,这是我的实现.但是这里实现的方法都没有被执行.

        adView.setAdListener(new AdListener() {

        @Override
        public void onReceiveAd(Ad arg0) {
            Toast.makeText(act, "Ad received",Toast.LENGTH_LONG).show();
        }

        @Override
        public void onPresentScreen(Ad arg0) {
        }

        @Override
        public void onLeaveApplication(Ad arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
            Toast.makeText(act, "Failed to receive Ad",Toast.LENGTH_LONG).show();
        }

        @Override
        public void onDismissScreen(Ad arg0) {
            // TODO Auto-generated method stub

        }
    });
Run Code Online (Sandbox Code Playgroud)

以及涵盖AdView的main.xml的一部分

<FrameLayout 
                    android:layout_width="fill_parent"
                    android:layout_height="50dp"
                    >
                <com.google.ads.AdView
                    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
                    android:id="@+id/adView"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    ads:adSize="BANNER"
                    ads:adUnitId="xxxxxxxxxxxxxxxx"
                    ads:loadAdOnCreate="true" />
                </FrameLayout>
Run Code Online (Sandbox Code Playgroud)

api android admob adview

22
推荐指数
3
解决办法
3万
查看次数

addView不起作用

我可能已阅读所有帖子和文档,但我仍然无法解决这个问题.

我想使用addView()方法将视图添加到现有(运行)布局,但由于某种原因我不能.我知道这应该是简单和基本但我仍然无法做到.所以,请帮帮我.

这是一个代码:

LinearLayout layout = (LinearLayout)findViewById(R.id.mainLayout);
TextView text       = new TextView(this);
text.setText("test");
layout.addView(text);
Run Code Online (Sandbox Code Playgroud)

这是一个代码,结果是我只显示了在xml文件中定义的视图.我没有添加这个新视图.当我调试时,我看到这个添加的视图作为我添加它的父项的子项,但它没有显示.

这是main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
                android:id="@+id/mainLayout"
              android:layout_width="fill_parent" 
              android:layout_height="fill_parent"
              android:orientation="vertical"
              android:background="@drawable/main1" >
    <TextView android:id="@+id/app_title"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:textColor="#FFF"
              android:text="@string/app_title"
              android:textSize="25dp" 
              android:gravity="center_horizontal"/>
    <TextView android:layout_width="fill_parent" 
              android:layout_height="wrap_content"
              android:layout_marginTop="5dp"
              android:text="@string/main_screen_counter_title"
              android:textSize="15dp" 
              android:textColor="#FFF"
              android:gravity="center_horizontal"/>
   <TextView android:id="@+id/frontScreenCounter"
              android:layout_width="fill_parent" 
              android:layout_height="wrap_content"
              android:textColor="#FFF"
              android:text="@string/reading"
              android:textSize="33dp"
              android:gravity="center_horizontal" />   
    <GridView android:id="@+id/gridview"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:columnWidth="90dp"
    android:numColumns="3"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
    android:textColor="#888"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

请帮忙.这会让我疯了!

layout android view adview viewgroup

16
推荐指数
1
解决办法
3万
查看次数

AdView导致内存泄漏

我正在使用AdView和LeakCanary.托管adView的片段在onDestroy中调用adView.destroy(),但LeakCanary显示托管此片段的Activity被com.google.android.gms.common.api.aaai泄露.堆转储还显示存在内存泄漏.当我删除AdView.loadAd()并且不在片段中加载广告时 - 没有泄漏.有什么想法或建议吗?谢谢.

android memory-leaks admob adview

16
推荐指数
2
解决办法
2183
查看次数

即使父活动暂停,admob AdView使用的WebViewCoreThread也使用高CPU

我正在使用Google Admob SDK v6.1.0(https://developers.google.com/mobile-ads-sdk/download),并以编程方式(不是以XML格式)实例化com.google.ads.AdView,并添加它在我的Activity中动态地变成LinearLayout.

我的一位用户报告说,当他们在我的Activity中点击Home按钮时(为了让它背景),他们开始看到来自我的应用程序的高CPU使用率.我能够在Jellybean平台上重现这一点,并注意到高CPU使用率的来源是WebViewCoreThread.

我的Activity根本不使用任何WebView,但我能够逐步完成Activity的初始化,并注意到当我实例化AdMob AdView对象时,此WebViewCoreThread会启动.作为AdMob引用中的状态,我在Activity的onDestroy()方法中调用此AdView上的destroy().我改变了我的代码,在我的onPause()方法中调用了AdView.onDestroy().但似乎没有任何因素导致WebViewCoreThread停止.我猜,如果那个线程坚持下去,我没关系.但是,如果我反复多次启动我的Activity,这个线程开始使用我的CPU的8%到25%之间的任何地方,即使我的活动不在前台.

我注意到其他一些用户说你必须调用WebView.onPause()作为纠正措施.(http://stackoverflow.com/questions/2040963/webview-threads-never-stop-webviewcorethread-cookiesyncmanager-http0-3)但这对我来说不是直接可行的,因为我的网页视图是由AdMob的AdView创建的.我还改变了我的代码,调用.removeAllViews()为mt Admob AdView的容器LinearLayout对象,然后调用System.gc()强制垃圾收集,但似乎什么都没有杀死我的WebViewCoreThread并最终开始吃掉CPU直到我强行 - 杀了我的应用程序.

AdMob为什么这样做的任何线索,以及我如何强制杀死这个线程?

我附加了一个我创建的类来封装AdView的创建和销毁.我在我的活动的初始化中调用了这个类的getNewAd()方法.我在Activity的onPause()和onDestroy()方法中调用了这个类的removeAd():

package com.shiprack.client;

import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;
import com.mobclix.android.sdk.Mobclix;
import com.mobclix.android.sdk.MobclixMMABannerXLAdView;

import android.app.Activity;
import android.view.Gravity;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;

public class AdManager {
    public AdManager(EventLog logger, LinearLayout container, Activity activity) {
        _container = container;
        _activity = activity;
        _eventLogger = logger;
    }

    public void setNetwork(int network) {
        _network = network;
    }

    public void getNewAd() {
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
        params.gravity = Gravity.CENTER;
        switch (_network) { …
Run Code Online (Sandbox Code Playgroud)

android admob android-webview adview

15
推荐指数
2
解决办法
3598
查看次数

如何在请求广告时让AdView"占用"空间?(机器人)

我正在使用适用于Android的Google AdMob Ads SDK 4.0.4

默认情况下,在加载广告之前,AdView将没有大小.如果广告上方或下方有按钮,则可能会出现问题.

如果广告在他们即将点击按钮的确切时刻返回,则用户可能会意外点击该广告.

在旧的admob SDK中,我使用setGoneWithoutAd(false)解决了这个问题.这样,即使广告尚未退回,也会保留空间.

在新的SDK(Google Admob Ads SDK 4.0.4)中,我设法通过使用此快速修复程序执行相同的操作:通过将广告放入宽度为"320dp"且高度为"50dp"的某些布局来保留空间

<LinearLayout 
                        android:layout_width="320dp" 
                        android:layout_height="50dp" > 
                  <com.google.ads.AdView android:id="@+id/adview" 
                         android:layout_width="wrap_content" 
                         android:layout_height="wrap_content" 
                         ads:adUnitId="xxxxxxxxxxx" 
                         ads:adSize="BANNER"/> 
</LinearLayout> 
Run Code Online (Sandbox Code Playgroud)

它有效,但我不确定这是否是一个正确的方法.(我会遇到着名的"没有足够的空间来展示广告!"问题吗?)

总结一个问题:即使在请求广告时,如何(正确)使AdView"占用"空间?

先感谢您!

android admob banner-ads android-layout adview

14
推荐指数
2
解决办法
3191
查看次数

如何以编程方式为AdMob指定adUnitId?

我正在尝试以编程方式将adUnitId设置为来自新版Google Play服务(旧版AdMob)的广告.

我有这个XML(用于<include>):

<com.google.android.gms.ads.AdView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/adView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ads:adSize="BANNER"/>
Run Code Online (Sandbox Code Playgroud)

这在onCreate()中:

AdView mAdview = (AdView)findViewById(R.id.adView);
    mAdview.setAdUnitId(((App)getApplication()).getAdmobKey());

    mAdview.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            super.onAdLoaded();
            findViewById(R.id.adView).setVisibility(View.VISIBLE);
        }
    });

    AdRequest adRequest = new AdRequest.Builder()
            .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
            .build();
    mAdview.loadAd(adRequest);
Run Code Online (Sandbox Code Playgroud)

我得到:

必须在调用loadAd之前设置广告尺寸和广告单元ID.

所以第二种选择是以编程方式制作广告.

新的XML:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:id="@+id/adView"
    />
Run Code Online (Sandbox Code Playgroud)

新代码:

AdView mAdview = new AdView(this);
...
((LinearLayout)findViewById(R.id.adView)).addView(mAdview);
mAdview.loadAd(adRequest);
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的错误.

我还尝试从com.google.android.gms.ads.AdView继承来制作自定义视图,但这是最终的.

有什么建议吗?

android admob adview

13
推荐指数
1
解决办法
7378
查看次数

Android:WebView在多个页面后停止加载

我有一个webview我正在加载自定义HTML使用loadDataWithBaseURL:

mArticleWebView.loadDataWithBaseURL("http://www.example.com/", htmlString, "text/html", "utf-8", null);
Run Code Online (Sandbox Code Playgroud)

这将适用于多个页面,然后事件在WebView中停止触发,因为平板电脑上的Jelly Bean似乎没有理由,并且Web的视图将是空白的.

这个WebViewCreation代码:

private void prepareWebView() {
mArticleWebView.setBackgroundColor(getResources().getColor(R.color.white));
mArticleWebView.setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY);
mArticleWebView.addJavascriptInterface(new ArticleJavaScriptInterface(getActivity()), "Company");
mArticleWebView.setWebChromeClient(new CustomChromeClient());
/* WebViewClient must be set BEFORE calling loadUrl! */
mArticleWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favi) {
        Log.e(TAG, "Signs of life, shock and awe.");
        super.onPageStarted(view, url, favi);
    }

  @Override
  public void onPageFinished(WebView view, String url) {
    Log.e(TAG, "onPageFinished..." + url);
    super.onPageFinished(view, url);
  }

  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) { …
Run Code Online (Sandbox Code Playgroud)

android android-webview adview android-4.1-jelly-bean

13
推荐指数
0
解决办法
850
查看次数

如何显示和隐藏admob横幅广告?

再给这个社区带来机会,我的最新问题从来没有得到回答

好吧,我有一个游戏,游戏有一个暂停按钮,隐藏大部分游戏界面只是在中间显示暂停文本.有太多的自由空间,所以我想在底部放一个横幅,直到再次按下暂停按钮并恢复游戏.

我知道如何制作横幅广告:

//When pause button is pressed
AdView adView = (AdView) this.findViewById(R.id.adView);
adView.setVisibility (View.VISIBLE);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何再次按下暂停按钮时停止它们,就是这样:

adView.setVisibility (View.GONE);
Run Code Online (Sandbox Code Playgroud)

我很确定adView不会停止仅使用此行发出请求.

我在这里看到一些关于这个的问题,但看起来他们使用的是旧的admob SDK版本

有人可以,请帮帮我吗?

谢谢

android admob adview

12
推荐指数
1
解决办法
2万
查看次数

多项活动的Admob?

我的申请中有7项活动.我想在每个活动中展示admob

我是否必须在每个活动中创建每个AdView?

要么

是否有任何替代方法可以重用以前的活动容器防止它被破坏,所以我可以在下一个活动中使用....

任何代码或提示我们都会欣赏.

Thankx

android admob adview android-activity

9
推荐指数
1
解决办法
9025
查看次数