【问题标题】:Add Ads Admob in class and call from another Activity/Class在课堂上添加 Ads Admob 并从另一个 Activity/Class 调用
【发布时间】:2019-01-04 01:14:35
【问题描述】:

我想在一个类中添加 ads InterstitialBanner 功能,并从其他类访问相同的功能。

我想在所有 Activity 类中调用它

我怎样才能做到这一点?

package com.example....;
import ...


public class classAds{

private InterstitialAd mInterstitialAd;


public void mobileAds()
{
    MobileAds.initialize(this,
            "ca-app-pub-3940256099942544~3347511713");

    mInterstitialAd = new InterstitialAd(this);
    mInterstitialAd.setAdUnitId("ca-app-pub-.............");

}    

我试过这段代码,但“this”中的问题不被接受

我也试过改成

classAds.this
getContext()
getActivity()

【问题讨论】:

    标签: java android android-studio android-intent admob


    【解决方案1】:

    我建议两种方法

    1.像这样创建一个单独的Application类

    public class ApplicationClass extends Application {
    
        private static ApplicationClass mInstance;
    
        public static Context getContext() {
            return mInstance;
        }
    
        @Override
        public void onCreate() {
            super.onCreate();
            mInstance = this;
        }
    
    }
    

    然后像这样更改您的 ClassAds

    public class classAds{
    
    private InterstitialAd mInterstitialAd;
    
    
    public void mobileAds()
    {
        MobileAds.initialize(ApplicationClass.getContext,
                "ca-app-pub-3940256099942544~3347511713");
    
        mInterstitialAd = new InterstitialAd(ApplicationClass.getContext);
        mInterstitialAd.setAdUnitId("ca-app-pub-.............");
    
    } 
    
    1. 将 ClassAds 更改为

      public class classAds{
      
      private InterstitialAd mInterstitialAd;
      
      public void mobileAds(Activity activity)
      {
          MobileAds.initialize(activity,
                  "ca-app-pub-3940256099942544~3347511713");
      
          mInterstitialAd = new InterstitialAd(activity);
          mInterstitialAd.setAdUnitId("ca-app-pub-.............");
      
         } 
      

    并在您的 Activity 类中调用该方法

    ClassAds classAds = new ClassAds;
    classAds.mobileAds(this);
    

    【讨论】:

      【解决方案2】:

      这是缺少context' required while creating theInterstitialAd `对象的简单案例。

      您可以做一件事,非常简单易懂。 这是您的通用代码。

      public class ClassAds{
      
      private InterstitialAd mInterstitialAd;
      private Context mContext;
      
      public ClassAds(Context context){
        //this is the constructor of this class
        mContext = context;
      }
      public InterstitialAd getMobileAds(){
      
      
          mInterstitialAd = new InterstitialAd(mContext);
          mInterstitialAd.setAdUnitId("ca-app-pub-.............");
          return mInterstitialAd;
      
         } 
      

      还可以根据文档创建您自己的应用程序类的版本,并在每次应用启动时仅初始化一次 SDK。阅读docs

      要创建您自己的应用程序,请阅读Here

      在应用程序类中使用您的 SDK id 制作一个最终的字符串变量

      private static final String _ad_id = "YOUR_ADMOB_APP_ID";
      

      然后在Application类的onCreate中这样初始化SDK。

      @Override
          public void onCreate() {
              super.onCreate();
                  MobileAds.initialize(activity, _ad_id );
          }
      

      然后从任何活动或类中使用它。

      ClassAds adsObject = new ClassAds(this)//here this is the context Activity
      adsObject.getMobileAds();
      

      尽管您将这个类设为单例并在多个活动中使用它,但如果 AdUnitId 保持不变。探索各种可能性!

      如果你错过了,我猜你肯定没有,here 是广告加载的官方指南。

      【讨论】:

        【解决方案3】:

        唯一的问题是上下文! 你像这样在类构造函数中传递上下文。 检查下面的代码!

        public class Interstial_Ads {
        
            private InterstitialAd mInterstitialAd;
             Context context;
        
        
            public Interstial_Ads(final Context context) {
                this.context = context;
        
                MobileAds.initialize(context, new OnInitializationCompleteListener() {
                       @Override
                       public void onInitializationComplete(InitializationStatus initializationStatus) {
                           mInterstitialAd = new InterstitialAd(context);
                           mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
                           mInterstitialAd.loadAd(new AdRequest.Builder().build());
                           if (mInterstitialAd.isLoaded()){
                               mInterstitialAd.show();
                           }
        
                       }
                   });
        
            }
        
        }
        

        在活动中调用该类传递活动上下文。

        Interstial_Ads         interstialAds = new Interstial_Ads(MainActivity.this);
        

        【讨论】:

          猜你喜欢
          • 2011-12-13
          • 2011-11-19
          • 1970-01-01
          • 1970-01-01
          • 2016-05-26
          • 2016-08-02
          • 2021-09-09
          • 2014-09-14
          • 1970-01-01
          相关资源
          最近更新 更多