2017-03-31 2 views
0

J'ai une barre de navigation avec trois onglets chaque onglet est un fragment. Maintenant, je veux que si je clique sur le deuxième onglet, que l'annonce interstitielle apparaît. Alors, où dois-je charger l'annonce? Et où dois-je afficher l'annonce?Comment afficher l'annonce interstitielle?

Mon 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); 


    } 

Mon 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; 
    } 

Et (je ne sais pas si cela importe) mon 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; 
     } 
    } 


     }); 
    } 

} 

Alors, où dois-je dire showInterstitial()? Im suspendu à ce problème depuis plus d'un mois maintenant, alors s'il vous plaît donnez-moi une explication en détail. Merci

+0

double possible de [Comment afficher interstitiel correctement dans ce cas?] (Http://stackoverflow.com/questions/43141684/how-to-show-interstitial-ad-correctly-in-this- cas) – William

Répondre

0

Vous devriez laisser le load() dans l'activité principale comme vous l'avez fait pour qu'il commence à mettre en cache l'annonce. Ensuite, vous appelez la fonction showInterstitial() où vous gérez l'événement click de l'adaptateur, c'est-à-dire où vous gérez les fragments.

+0

Je suis assez nouveau sur Android, où dois-je gérer mes Fragments? ^^ –

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

S'il vous plaît relire ma question –

+0

Voir ma réponse éditée et appeler 'displayInterstitial()' sur le clic de la deuxième onglet –