In meiner App habe ich eine Navigationsleiste mit drei Registerkarten, jede Registerkarte ist ein Fragment und die Leiste sieht so aus: https://gyazo.com/5052f885effb3e0154d407b3bd8d3884 Es ist einfach eine normale Navigationsleiste mit drei Registerkarten.Wie kann ich die Interstitial-Anzeige anzeigen, indem ich auf die zweite Registerkarte in meiner Navigationsleiste klicke?
So jetzt möchte ich meine Interstitial-Anzeige (die ich laden in meiner MainActivity onCreate) durch Drücken der zweiten Registerkarte in diesem Fall die Registerkarte mit dem Namen "Ausraster" anzeigen.
Also habe ich folgendes:
public class MainActivity extends AppCompatActivity{
public InterstitialAd mInterstitialAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AdRequest adRequest = new AdRequest.Builder().build();
mInterstitialAd = new InterstitialAd(MainActivity.this);
mInterstitialAd.setAdUnitId("MY ID");
mInterstitialAd.loadAd(adRequest);
}
und dann schrieb ich die displayInterstitial Methode in meinem MainActivity:
public void displayInterstitial() {
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
}
});
}
Endlich bin ich die interstitielle Anzeige in der MainActivity onCreate wie folgt geladen schrieb diese Zeile in der onCreateView meines zweiten Fragments das "Ausraster" -Fragment:
((MainActivity)getActivity()).displayInterstitial();
Sollte nun eigentlich alles klappen aber das Problem ist folgendes: Wenn ich die Anwendung starte, wird die Interstitial Anzeige nach einer Verzögerung von 3 Sekunden angezeigt, ohne auf die zweite Registerkarte zu drücken. Aber ich möchte, dass es nur angezeigt wird, wenn ich auf die zweite Registerkarte klicke. Was kann ich also tun?
Ich habe dieses Problem jetzt über einen Monat und ich wäre so froh, wenn jemand mir sagen kann, warum die Interstitial-Anzeige ohne Drücken der zweiten Registerkarte angezeigt wird.
Hier sind alle meine Codes, ich hoffe, Sie es mir erklären kann, und sorry für mein schlechtes Englisch :)
MainActivity:
public class MainActivity extends AppCompatActivity{
FragmentManager mFragmentManager;
FragmentTransaction mFragmentTransaction;
public InterstitialAd mInterstitialAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
*Setup the NavigationView
*/
mNavigationView = (NavigationView) findViewById(R.id.shitstuff) ;
/**
* Lets inflate the very first fragment
* Here , we are inflating the TabFragment as the first Fragment
*/
mFragmentManager = getSupportFragmentManager();
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.containerView,new TabFragment()).commit();
AdRequest adRequest = new AdRequest.Builder().build();
mInterstitialAd = new InterstitialAd(MainActivity.this);
mInterstitialAd.setAdUnitId("MyId");
mInterstitialAd.loadAd(adRequest);
}
public void displayInterstitial() {
mInterstitialAd.setAdListener(new AdListener() {
public void onAdLoaded() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
}
}
});
}
}
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 KommentareFragment();
}
if(position == 1){
return new AusrasterFragment();
}
if(position == 2){
return new LustigesFragment();
}
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 "Kommentare";
case 1 :
return "Ausraster";
case 2 :
return "Lustiges";
}
return null;
}
}
final public void showInterstitial(){
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
super.onAdLoaded();
if(mInterstitialAd.isLoaded()){
mInterstitialAd.show();
}
}
@Override
public void onAdClosed() {
}
});
}
}
Und last my secondFragment:
public class AusrasterFragment extends Fragment{
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView=inflater.inflate(R.layout.ausraster_layout,container,false);
return rootView;
}
Du hast mein Leben gerettet ^^ Danke Kumpel. –
Froh, Ihnen zu helfen :) –