Admob setAdListener无法正常工作

时间:2017-07-26 07:34:09

标签: android admob

我创建了一个横幅广告,(x)按钮会破坏广告视图。当我在同一个活动中再次加载广告时,它不会调用adListener方法。应用程序第一次开始工作。因此,首次出现广告时我可以看到Visible(x)按钮,但是当我使用(x)按钮销毁广告时,它会销毁广告,但是当我加载广告时,它会成功加载广告,但它并未调用' adListener&# 39;所以按钮不会显示。

这是我的代码:

<FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true">

            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="15dp" >

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:orientation="vertical" >


                    <com.google.android.gms.ads.AdView
                        android:id="@+id/adView"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        ads:adSize="MEDIUM_RECTANGLE"
                        ads:adUnitId="@string/banner_home_footer">
                    </com.google.android.gms.ads.AdView>


                </LinearLayout>
            </FrameLayout>

            <LinearLayout
                android:id="@+id/layout_close_banner_ad"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:orientation="vertical"
                android:gravity="center"
                android:layout_gravity="end"
                android:visibility="gone"
                android:background="@drawable/round_view">

                <ImageView
                    android:id="@+id/imageview_close_banner_ad"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:src="@drawable/ic_action_close_dialog" />


            </LinearLayout>
        </FrameLayout>

班级档案:

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

mAdView.setAdListener(new AdListener() {
            @Override
            public void onAdClosed() {
                Log.i("Ads", "onAdClosed");
                super.onAdClosed();
            }

    @Override
    public void onAdFailedToLoad(int i) {
        Log.i("Ads", "onAdFailedToLoad");
        super.onAdFailedToLoad(i);
    }

    @Override
    public void onAdLeftApplication() {
        Log.i("Ads", "onAdLeftApplication");
        super.onAdLeftApplication();
    }

    @Override
    public void onAdOpened() {
        Log.i("Ads", "onAdOpened");
        super.onAdOpened();
        adCloseButton.setVisibility(View.VISIBLE);
    }

    @Override
    public void onAdLoaded() {
        Log.i("Ads", "onAdLoaded");
        super.onAdLoaded();
        adCloseButton.setVisibility(View.VISIBLE);
    }

});


private void showBannerAd() {

    mAdView.loadAd(adRequest);

}

//点击关闭图标

时销毁广告
 adCloseButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(mAdView != null){
                        mAdView.destroy();
                    }
                    adCloseButton.setVisibility(View.GONE);
                }
            });

1 个答案:

答案 0 :(得分:0)

来自docs关于destroy

  

销毁广告视图。应该在父Activity的onDestroy()方法中调用此方法。 调用destroy()后,不应在广告视图中调用其他方法。

而不是致电destroy,而是将广告的展示次数设置为View.InvisibleView.GONE。在onAdLoaded adView中制作广告VISIBLE