在多个活动上进行Admob?

我在我的应用程序中有7个活动。 我想在每个活动中展示admob

我是否需要在每个活动中创build每个AdView?

要么

有没有其他select重用以前的活动容器防止它摧毁,所以我可以在下一个活动中使用….

任何代码或暗示,我们会​​感激。

Thankx

Solutions Collecting From Web of "在多个活动上进行Admob?"

我做了这个。 Thankx对约克评论。 这不是一个有效的代码。 但是你可以相应地修改。 这会减less您的每个活动的代码

只需扩展“TestingAdmobActivity”打电话给SetupAds()来打电话给你的advs。

我的SuperClass“TestingAdmobActivity.java”

package com.test.myadmob; import com.google.ads.Ad; import com.google.ads.AdListener; import com.google.ads.AdRequest; import com.google.ads.AdRequest.ErrorCode; import com.google.ads.AdSize; import com.google.ads.AdView; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; public class TestingAdmobActivity extends Activity implements AdListener{ public AdView adView; public String ADV_PUB_ID = "a14e2fb60918999"; private boolean adVisible = true; LinearLayout layout; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i("Admob", "Calling External"); } public void SetupAds(){ Log.i("AdMob", "Start Setup"); layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); layout.setGravity(android.view.Gravity.BOTTOM | android.view.Gravity.CENTER_HORIZONTAL); //To put AdMob Adv to Bottom of Screen Log.i("AdMob", "End Layout Setup"); addContentView(layout, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); adView = new AdView(this, AdSize.BANNER, ADV_PUB_ID); adView.setAdListener(this); Log.i("AdMob", "Init complete Adview"); layout.addView(adView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); Log.i("AdMob", "Done AddView Layout"); AdRequest request = new AdRequest(); request.addTestDevice(AdRequest.TEST_EMULATOR); request.addKeyword("LifeOK"); adView.loadAd(request); Log.i("AdMob", "End Setup"); } private Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case 0: //Disable Adv if (adVisible) adVisible = false; break; case 1: //Enable Adv if (!adVisible) { Log.i("AdMob", "Case 1"); adVisible = true; } break; case 2: //Enable but Hide Adv adView.setVisibility(View.GONE); break; case 3: //Enable but Show Adv adView.setVisibility(View.VISIBLE); break; default: break; } } }; public void DisableAds() { Log.i("AdMob", "Request Disable Adv"); handler.sendEmptyMessage(0); } public void EnableAds() { Log.i("AdMob", "Request Enable Adv"); handler.sendEmptyMessage(1); } public void HideAdv() //Enable Adv but Hide { Log.i("AdMob", "Request Hide Adv"); handler.sendEmptyMessage(2); } public void ShowAdv() //Show Adv { Log.i("AdMob", "Request Show Adv"); handler.sendEmptyMessage(3); } @Override public void onDismissScreen(Ad arg0) { // TODO Auto-generated method stub Log.d("AdMob", "Dismiss Screen"); } @Override public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) { // TODO Auto-generated method stub Log.d("AdMob", "failed to receive ad (" + arg1 + ")"); } @Override public void onLeaveApplication(Ad arg0) { // TODO Auto-generated method stub Log.d("AdMob", "Leaving Application"); } @Override public void onPresentScreen(Ad arg0) { // TODO Auto-generated method stub Log.d("AdMob", "Present Screen"); } @Override public void onReceiveAd(Ad arg0) { // TODO Auto-generated method stub Log.d("AdMob", "Adv Received"); } } 

我的FirstActivityClass“NewActivity_1.java”

 package com.test.myadmob; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; public class NewActivity_1 extends TestingAdmobActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i("Admob", "OnCreate"); SetupAds(); Log.i("Admob", "Done"); Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("Admob", "Going to Activity 2"); Intent mainIntent = new Intent().setClass(NewActivity_1.this, NewActivity_2.class); startActivity(mainIntent); } }); } } 

我的SecondActivityClass“NewActivity_2.java”

 package com.test.myadmob; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; public class NewActivity_2 extends TestingAdmobActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i("Admob", "OnCreate"); SetupAds(); Log.i("Admob", "Done"); Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("Admob", "Going Back to Activity 1"); finish(); } }); } } 

我的AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.myadmob" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".NewActivity_1" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".TestingAdmobActivity" ></activity> <activity android:name=".NewActivity_2" ></activity> <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" > </activity> </application> <!-- AdMob SDK requires Internet permission --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- to get Android Device ID --> </manifest> 

注意:为了使用谷歌admob sdk的权限,我必须build立在Android 4.0 sdk与min-sdk版本7

在我的应用程序中,我有一个0..12广告caching在任何给定的时间。 我正在重复使用它们在一个无尽的ViewPager中的不同片段。 caching类负责将广告提供给碎片。

诀窍是:

  1. 只有当您确定已经完成AdView实例时才调用AdView的onDestory 。 这意味着碎片本身并不负责这一点。

  2. 在AdFragment之间传递AdView,我们需要记住将每个AdView从其层次结构中分离出来:

(当然只在UI线程上):

 public void detachFromHirerchy() { View adView = getAdView(); if ( adView != null ) { ViewGroup parent = (ViewGroup) adView.getParent(); if (parent != null) { parent.removeView( adView ); } } }