Добавить объявление Admob в классе и позвонить из другой деятельности / класса - PullRequest
0 голосов
/ 04 января 2019

Я хочу добавить функцию Реклама Interstitial или Banner в одном классе и получить к ней доступ из другого класса.

И я хочу вызвать ее ввсе классы занятий

Как этого добиться?

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()

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Это простой случай пропуска объекта context' required while creating the InterstitialAd `.

Есть одна вещь, которую вы можете сделать, довольно простая и понятная.Вот ваш код в общем виде.

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;

   } 

также в соответствии с документацией создайте версию своего собственного класса Application и инициализируйте SDK только один раз за запуск приложения.Прочитайте docs

Чтобы создать собственное приложение, прочитайте Здесь

создайте окончательную строковую переменную с идентификатором SDK, подобным этому, в классе приложений

private static final String _ad_id = "YOUR_ADMOB_APP_ID";

затем инициализируйте SDK следующим образом в onCreate класса Application.

@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 остается тем же.Изучите возможности!

Если вы пропустили, я думаю, вы точно этого не сделали, здесь является официальным руководством по загрузке рекламы.

0 голосов
/ 04 января 2019

Я предлагаю два метода

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-.............");

} 

Измените 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);
...