2017-03-31 122 views
0

我有一個帶有三個選項卡的導航欄,每個選項卡都是一個片段。 現在我想要的是,如果我點擊第二個標籤,即會彈出插頁式廣告。 那麼我需要在哪裏載入廣告?我必須在哪裏顯示廣告?如何顯示插頁式廣告?

我的MainActivity:

public class MainActivity extends AppCompatActivity{ 
    public MediaPlayer mp; 
    NavigationView mNavigationView; 
    FragmentManager mFragmentManager; 
    FragmentTransaction mFragmentTransaction; 
    public InterstitialAd mInterstitialAd; 

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


     mNavigationView = (NavigationView) findViewById(R.id.shitstuff) ; 

     mFragmentManager = getSupportFragmentManager(); 
     mFragmentTransaction = mFragmentManager.beginTransaction(); 
     mFragmentTransaction.replace(R.id.containerView,new TabFragment()).commit(); 



     android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar); 



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

     AdRequest adRequest = new AdRequest.Builder().build(); 
     mInterstitialAd = new InterstitialAd(getContext()); 
     mInterstitialAd.setAdUnitId("ca-app-pub-9756227769488050/2954649723"); 
     mInterstitialAd.loadAd(adRequest); 


    } 

我secondFragment:

public class SecondFragment extends Fragment { 


    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView=inflater.inflate(R.layout.second_layout,container,false); 


     return rootView; 
    } 

和(我不知道,如果該事項)我TabFragment:

public class TabFragment extends Fragment { 
    public static TabLayout tabLayout; 
    public static ViewPager viewPager; 
    public static int int_items = 3 ; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 


     /** 
     *Inflate tab_layout and setup Views. 
     */ 
      View x = inflater.inflate(R.layout.tab_layout,null); 
      tabLayout = (TabLayout) x.findViewById(R.id.tabs); 
      viewPager = (ViewPager) x.findViewById(R.id.viewpager); 

     /** 
     *Set an Apater for the View Pager 
     */ 
     viewPager.setAdapter(new MyAdapter(getChildFragmentManager())); 

     /** 
     * Now , this is a workaround , 
     * The setupWithViewPager dose't works without the runnable . 
     * Maybe a Support Library Bug . 
     */ 

     tabLayout.post(new Runnable() { 
      @Override 
      public void run() { 
        tabLayout.setupWithViewPager(viewPager); 
        } 
     }); 

     return x; 

    } 

    class MyAdapter extends FragmentPagerAdapter { 

     public MyAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     /** 
     * Return fragment with respect to Position . 
     */ 

     @Override 
     public Fragment getItem(int position) 
     { 

      if(position == 0){ 
       return new FirstFragment(); 
      } 
      if(position == 1){ 
       return new SecondFragment(); 
      } 
      if(position == 2){ 
       return new ThirdFragment(); 
      } 

     return null; 
     } 

     @Override 
     public int getCount() { 

      return int_items; 

     } 

     /** 
     * This method returns the title of the tab according to the position. 
     */ 

     @Override 
     public CharSequence getPageTitle(int position) { 

      switch (position){ 
       case 0 : 
        return "first"; 
       case 1 : 
        return "second"; 
       case 2 : 
        return "third"; 
      } 
       return null; 
     } 
    } 


     }); 
    } 

} 

那麼,我必須說showInterstitial()

final public void showInterstitial(){ 
    mInterstitialAd.setAdListener(new AdListener() { 
     @Override 
     public void onAdLoaded() { 
      super.onAdLoaded(); 
      if(mInterstitialAd.isLoaded()){ 
       mInterstitialAd.show(); 
      } 

     } 

     @Override 
     public void onAdClosed() { 
     } 

我在這個問題上掛了一個多月了,所以請給我一個詳細的解釋。謝謝

+0

的可能的複製[如何在這種情況下正確顯示插頁式廣告?](http://stackoverflow.com/questions/43141684/how-to-show-interstitial-ad-correctly-in-this-案例) – William

回答

0

你應該像你這樣在主要活動中放置load(),它會開始緩存廣告。然後,您將調用showInterstitial()函數處理適配器單擊事件,即處理碎片的位置。

+0

我對Android非常陌生,我在哪裏處理碎片? ^^ –

0
public class MainActivity extends Activity { 
private InterstitialAd interstitial; 

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


mNavigationView = (NavigationView) findViewById(R.id.shitstuff) ; 

mFragmentManager = getSupportFragmentManager(); 
mFragmentTransaction = mFragmentManager.beginTransaction(); 
mFragmentTransaction.replace(R.id.containerView,new TabFragment()).commit(); 

android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar); 

    // Prepare the Interstitial Ad 
    interstitial = new InterstitialAd(MainActivity.this); 
    // Insert the Ad Unit ID 
    interstitial.setAdUnitId("ca-app-pub-123456789/123456789"); 

    //Locate the Banner Ad in activity_main.xml 
    AdView adView = (AdView) this.findViewById(R.id.adView); 

    // Request for Ads 
    AdRequest adRequest = new AdRequest.Builder().build(); 

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


} 
public void displayInterstitial() { 
    // If Ads are loaded, show Interstitial else show nothing. 
    // Load ads into Interstitial Ads 
    interstitial.loadAd(adRequest); 

    // Prepare an Interstitial Ad Listener 
    interstitial.setAdListener(new AdListener() { 
     public void onAdLoaded() { 
      if (interstitial.isLoaded()) { 
     interstitial.show(); 
    } 
     } 
    }); 
    } 
} 
+0

請再次閱讀我的問題 –

+0

請參閱我已編輯的答案並通過點擊第二個選項卡調用'displayInterstitial()' –