신청서에 7 가지 활동이 있습니다. 내가 원하는 모든 활동에 admob 표시여러 활동에 대한 AdMob?
모든 활동마다 각 AdView를 만들어야합니까?
또는
그래서 난 다음 활동 ....
코드 또는 우리는거야 힌트에서 사용할 수있는 파괴에서 또는 그것을 방지 이전 활동 컨테이너를 재사용 할 수있는 대안이 B는 감사한다.
감사의 말
신청서에 7 가지 활동이 있습니다. 내가 원하는 모든 활동에 admob 표시여러 활동에 대한 AdMob?
모든 활동마다 각 AdView를 만들어야합니까?
또는
그래서 난 다음 활동 ....
코드 또는 우리는거야 힌트에서 사용할 수있는 파괴에서 또는 그것을 방지 이전 활동 컨테이너를 재사용 할 수있는 대안이 B는 감사한다.
감사의 말
나는 이것을했다. 고맙다 yorkw 코멘트. 이것은 효율적인 코드가 아닙니다. 그러나 그에 따라 수정할 수 있습니다. 그 각 활동 코드를 줄입니다.
그냥 당신의 advs를 호출하는 "TestingAdmobActivity" & 전화 SetupAds()을 확장합니다.
내 슈퍼 클래스 "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에서 사용 권한을 위해서, 나는 분-SDK 버전과 안드로이드 4.0 SDK에서이 작업을 구축해야 7
내 응용 프로그램에서 나는 주어진 시간에 0..12 광고의 캐시가 있습니다. 끝없는 ViewPager에서 다른 조각들을 재사용하고 있습니다. 캐싱 클래스는 프래그먼트에 광고를로드하는 것을 담당합니다.
트릭은에 :
를 호출에서 AdView의 onDestory
당신은 당신이 영원히 그 AdView가 인스턴스가 완료 확실 경우에만 사용할 수 있습니다. 이것은 단편 자체가 이것을 담당하지 않는다는 것을 의미합니다.
(단지 과정의 UI 스레드에서) :
public void detachFromHirerchy()
{
View adView = getAdView();
if (adView != null)
{
ViewGroup parent = (ViewGroup) adView.getParent();
if (parent != null)
{
parent.removeView(adView);
}
}
}
는 만들기 조각 사이에서 AdView의 자신, 우리는 그 계층 구조에서 각로 AdView를 분리 기억할 필요가 전달
Super class AdAwareActivity는 onCreate()/onDestroy()에서 광고보기를 올바르게 설정/해제 한 다음 Ad 기능이 필요한 모든 활동에서 AdAwareActivity를 확장합니다. – yorkw
나는이 문제에 대한 답을 알고 싶다. 같은 문제를 알아 내려고 노력 중이다. – Anshul