2015-03-27 2 views
5

Ich habe drei Aktivitäten insgesamt und ich implementiere admob für jede Aktivität, jede Aktivität hat ihr eigenes Banner und wenn die Aktivität sich ändert, hängt die andere Aktivität ein wenig wegen der Anzeigenladung im Hintergrund, Gibt es eine Möglichkeit, dass ein Banner in allen Aktivitäten angezeigt wird, wenn geschaltet wird, um Verzögerungen zu vermeiden.Implementieren von admob für verschiedene Aktivitäten

+0

Die Anzeige Lasten in einem separaten Thread natürlich aus dem Kasten heraus. In allen meinen Apps lade ich die Anzeige in Beton und zeige sie dann bei voller Auslastung an. –

Antwort

1

Der ideale Weg ist die Verwendung von Fragmenten für jeden Ihrer screens. Auf diese Weise verwenden Sie eine einzelne Aktivität mit einer einzigen Anzeigenansicht.

Wenn Sie stattdessen mehrere Aktivitäten verwenden möchten, dann ist die einzige Abhilfe, die ich kenne, ist eine statische Methode zu verwenden, um die Anzeigen zu laden:

public class MyAdView { 
    public static void SetAD(AdView adView){ 
     AdRequest adRequest = new AdRequest.Builder() 
      .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
      .build(); 
     adView.loadAd(adRequest); 
    } 

} 

Verbrauch:

public class SomeActivity extends Activity { 
    private AdView adView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.caller_main); 
     MyAdView.SetAd((AdView)findViewById(R.id.adView)); 
    } 
} 
+0

Konnte –

+0

den besten Ansatz nicht verstehen, um lange admob-bezogene Codes von Aktivitäten fern zu halten! Danke, aber macht es Sinn, es statisch zu machen? –

14

Sie kann es tun, laden Sie einfach ad in der Anwendungsklasse und verwenden Sie es in jeder Aktivität.

Sie demo

herunterladen können, wie ich es tun,

App Klasse

import android.app.Application; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 
import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.AdSize; 
import com.google.android.gms.ads.AdView; 

public class App extends Application { 

AdView adView; 

@Override 
public void onCreate() { 
    // TODO Auto-generated method stub 

    super.onCreate(); 

    adView = new AdView(this); 
    adView.setAdSize(AdSize.SMART_BANNER); 
    adView.setAdUnitId("ca-app-pub-1267746788642565/8418489933"); 
    // Request for Ads 
    AdRequest adRequest = new AdRequest.Builder().build(); 

    // Load ads into Banner Ads 
    adView.loadAd(adRequest); 
} 

public void loadAd(LinearLayout layAd) { 

    // Locate the Banner Ad in activity xml 
    if (adView.getParent() != null) { 
     ViewGroup tempVg = (ViewGroup) adView.getParent(); 
     tempVg.removeView(adView); 
    } 

    layAd.addView(adView); 

} 
} 

Hauptaktivität

public class MainActivity extends Activity { 

App app; 
LinearLayout layAd; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    layAd = (LinearLayout) findViewById(R.id.layad); 

    app = (App) getApplication(); 
    app.loadAd(layAd); 

    Button btnNext = (Button) findViewById(R.id.next); 
    btnNext.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent iNext = new Intent(MainActivity.this, 
        SecondActivity.class); 
      startActivity(iNext); 
     } 
    }); 
} 

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    app.loadAd(layAd); 
    super.onResume(); 
} 
} 

Zweite Aktivität

public class SecondActivity extends Activity { 

App app; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_second); 

    LinearLayout layAd = (LinearLayout) findViewById(R.id.layad); 

    app = (App) getApplication(); 
    app.loadAd(layAd); 
} 
} 

Manifest xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.admobdemo" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="21" /> 

<application 
    android:name="com.example.admobdemo.App" 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.admobdemo.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.example.admobdemo.SecondActivity" 
     android:label="@string/app_name" > 
    </activity> 

    <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" /> 
</application> 
</manifest> 

Haupttätigkeit Layout XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/LinearLayout1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context="${relativePackage}.${activityClass}" > 

<LinearLayout 
    android:id="@+id/layad" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 
</LinearLayout> 

<Button 
    android:id="@+id/next" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 
</LinearLayout> 

und zweite Aktivitäts Layout XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/LinearLayout1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context="${relativePackage}.${activityClass}" > 

<LinearLayout 
    android:id="@+id/layad" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 
</LinearLayout> 
</LinearLayout> 
+0

Aufwand zum Erklären geschätzt, aber es zeigt Fehler bei mir –

+0

Können Sie hier Fehler posten ...... – RBK

+0

@RaviKoradiya kann ich Layout für AdView hier in 'Application' Klasse verwenden? – NarendraJi