【问题标题】:How to implement Interstitial ad in Tab Layout?如何在标签布局中实现插页式广告?
【发布时间】:2018-09-26 01:52:27
【问题描述】:

当我将一个标签移动到另一个标签时,我需要实施有趣的广告。我使用下面的代码来使用它,但没有显示有趣的广告。我该怎么做?

public class MainActivity extends AppCompatActivity {

private TabLayout tabLayout;
private ViewPager viewPager;
private int[] tabIcons = {
        R.drawable.score,
        R.drawable.fix,
        R.drawable.tv
};

public static int int_items = 3 ;

private InterstitialAd mInterstitialAd;




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





        mInterstitialAd = new InterstitialAd(MainActivity.this);
        mInterstitialAd.setAdUnitId(Ad_code.Interstitial2);
        mInterstitialAd.loadAd(new AdRequest.Builder().addTestDevice("B167DCA4FD495BF41A2298FBC4894E56").build());


        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);
        setupTabIcons();
    }


}

private void setupTabIcons() {
    tabLayout.getTabAt(0).setIcon(tabIcons[0]);
    tabLayout.getTabAt(1).setIcon(tabIcons[1]);
    tabLayout.getTabAt(2).setIcon(tabIcons[2]);
}

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());

    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        public void onPageScrollStateChanged(int state) {}
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

        public void onPageSelected(int position) {
            if(position == 1)
                showInterstitial();
        }
    });

    adapter.addFrag(new ScoreFrag(), "A");

    adapter.addFrag(new FixtureFrag(), "B");

    adapter.addFrag(new TVFrag2(), "C");
    viewPager.setAdapter(adapter);
}

class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {

        if(position == 0){

            return new AFragment();
        }
        if(position == 1){
            return new BFragment();
        }
        if(position == 2){
            return new CFragment();
        }

        return null;
    }

    @Override
    public int getCount() {
        return int_items;
    }

    public void addFrag(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position){
            case 0 :
                return "A";
            case 1 :
                return "B";
            case 2 :
                return "C";
        }
        return mFragmentTitleList.get(position);
    }
}


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

        }

        @Override
        public void onAdClosed() {
        }
    });
}

现在我需要在用户转到 A 到 B 片段、B 到 C 片段、C 到 B 片段、B 到 A 片段和 C 到 A 片段时放置插页式广告。这只是一个测试目的,所以我需要在这里放置很多广告。

我的片段代码

     public FixtureFrag() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

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

        View v = inflater.inflate(R.layout.fragment_one, container, false);

        this.context = getActivity();

        pbar = v.findViewById(R.id.progressBar1);

return v;
}

主要问题在哪里?我是初学者。那么谁能给我解决方案?

【问题讨论】:

    标签: android android-tablayout interstitial


    【解决方案1】:

    在您的 onPageSelected 方法中删除 if(position == 1)

    public void onPageSelected(int position) {
    
           //if(position == 1) ---> remove this
    
           showInterstitial();
    }
    

    【讨论】:

      【解决方案2】:
        tab_layout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                  @Override
                  public void onTabSelected(TabLayout.Tab tab) {
      
                      viewpager.setCurrentItem(tab.getPosition());
      
                      if (tab.getPosition() == 6 || tab.getPosition() == 11 )
      
                          if (mInterstitialAd.isLoaded()) {
                              mInterstitialAd.show();
                          }
                  }
      
                  @Override
                  public void onTabUnselected(TabLayout.Tab tab) {
                  }
      
                  @Override
                  public void onTabReselected(TabLayout.Tab tab) {
                  }
              });
      
      
              mInterstitialAd.setAdListener(new AdListener() {
                  @Override
                  public void onAdClosed() {
                      mInterstitialAd.loadAd(new AdRequest.Builder().build());
                  }
              });
      
      

      【讨论】:

        猜你喜欢
        • 2021-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-11
        • 1970-01-01
        相关资源
        最近更新 更多