2017-11-08 3 views
-2

내 게임에 배너를 배치하려하지만이를 실행할 때 배너가 표시되고 게임이 아닙니다. 코드를 수정할 때 게임이 표시되고 배너는 표시되지 않습니다. 이것은 "MainAvtivity.java"의 코드입니다.Android Studio에서 Admob 배너를 표시하는 중 오류가 발생했습니다.

참고 : 인터넷에서 몇 가지 솔루션을 검색하고 "setContentView (view);"변수를 수정해야한다고 알려줍니다. 게임과 변수를 보여주는 "setContentView (layout);" 배너를 보여줍니다.

import android.app.Activity; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.view.Gravity; 
import android.view.KeyEvent; 
import android.view.Window; 
import android.widget.LinearLayout; 

import com.google.android.gms.ads.AdListener; 
import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.AdSize; 
import com.google.android.gms.ads.AdView; 
import com.google.android.gms.ads.InterstitialAd; 
import com.google.android.gms.ads.MobileAds; 

public class MainActivity extends Activity { 
    InterstitialAd mInterstitialAd; 
    private InterstitialAd interstitial; 
    MainView view; 
    public static final String WIDTH = "width"; 
    public static final String HEIGHT = "height"; 
    public static final String SCORE = "score"; 
    public static final String HIGH_SCORE = "high score temp"; 
    public static final String UNDO_SCORE = "undo score"; 
    public static final String CAN_UNDO = "can undo"; 
    public static final String UNDO_GRID = "undo"; 
    public static final String GAME_STATE = "game state"; 
    public static final String UNDO_GAME_STATE = "undo game state"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     view = new MainView(getBaseContext()); 

     SharedPreferences settings = PreferenceManager 
       .getDefaultSharedPreferences(this); 
     view.hasSaveState = settings.getBoolean("save_state", false); 

     if (savedInstanceState != null) { 
      if (savedInstanceState.getBoolean("hasState")) { 
       load(); 
      } 
     } 
     setContentView(view); 

     //Add this in OnCreate of Activity to initialize the ad 
     MobileAds.initialize(getApplicationContext(), "ca-app-pub-3940256099942544/6300978111"); 

     //Add this wherever your code needs to add the ad 

     LinearLayout layout = new LinearLayout(this); 
     layout.setOrientation(LinearLayout.VERTICAL); 

//Additionally to adjust the position to Bottom 
     layout.setGravity(Gravity.BOTTOM); 

// Create a banner ad 
     AdView mAdView = new AdView(this); 
     mAdView.setAdSize(AdSize.SMART_BANNER); 
     mAdView.setAdUnitId("ca-app-pub-3940256099942544/6300978111"); 

// Create an ad request. 
     AdRequest.Builder adRequestBuilder = new AdRequest.Builder(); 

// Optionally populate the ad request builder. 
     adRequestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR); 

// Add the AdView to the view hierarchy. 
     layout.addView(mAdView); 

// Start loading the ad. 
     mAdView.loadAd(adRequestBuilder.build()); 

     setContentView(layout); 

     AdRequest adRequest = new AdRequest.Builder().build(); 

     // Prepare the Interstitial Ad 
     interstitial = new InterstitialAd(MainActivity.this); 
// Insert the Ad Unit ID 
     interstitial.setAdUnitId(getString(R.string.admob_interstitial_id)); 

     interstitial.loadAd(adRequest); 
// Prepare an Interstitial Ad Listener 
     interstitial.setAdListener(new AdListener() { 
      public void onAdLoaded() { 
// Call displayInterstitial() function 
       displayInterstitial(); 
      } 
     }); 

    } 

    public void displayInterstitial() { 
    // If Ads are loaded, show Interstitial else show nothing. 
     if (interstitial.isLoaded()) { 
      interstitial.show(); 
     } 
    } 

    ... 

감사합니다.

답변

1

보기 및 레이아웃 모두에 대해 setContentView()으로 전화하지 말고 게임에 대해서만 setContentView를 호출해야합니다. MainView의 루트 레이아웃은 RelativeLayout 또는 FrameLayout이어야하며 AdView를 레이아웃 매개 변수를 사용하여 루트 레이아웃의 하단, 상단 또는 원하는 곳에 추가해야합니다.

+0

예를 들어주세요. – Leo

관련 문제