2017-03-31 101 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()' –

相关问题