【问题标题】:How to show interstitial Ads at the opening of the fragment?如何在片段开头显示插页式广告?
【发布时间】:2020-10-31 00:38:46
【问题描述】:

我正在尝试在打开或加载片段之前显示测试插页式广告。我的片段是从其他片段中调用的,我将测试广告的代码放在片段的 onCreateView() 中,我想在其打开之前放置广告,但实际上在显示(打开)该片段之前没有出现广告,而相同的代码正在工作并在 Ad 放置在同一片段类的 onResume() 内时显示 Ad。目标 API 16-30。任何帮助将不胜感激。

代码sn-p:

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

查看 viewCalc2d=inflater.inflate(R.layout.fragment_calc2d, container, false);

mInterstitialAd = new InterstitialAd(getActivity().getBaseContext());
    mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
    mInterstitialAd.loadAd(new AdRequest.Builder().build());
    mInterstitialAd.show();

// 做点什么

}

【问题讨论】:

  • 兄弟,它需要先加载您的广告,然后您可以在片段开始时显示添加
  • 就我而言,加载广告的正确位置是什么?展示广告的正确位置是什么?你的意思是我必须在 MainAactivity 的 onCreate() 中加载广告,然后在片段的 onCreatView 中显示它?
  • 检查我的答案

标签: android interstitial


【解决方案1】:

1.首先创建一个对象类为this

object AdmobUtil {

    private lateinit var interstitialAd: InterstitialAd

    fun loadAdmobInterstitialAd(context: Context) {

        interstitialAd = InterstitialAd(context)

        interstitialAd.adUnitId = interstitialAdUnitId

        interstitialAd.loadAd(AdRequest.Builder().build())

    }

    fun showInterstitialAd() {
        if (interstitialAd.isLoaded) interstitialAd.show()
    }

}

2.在显示片段之前加载添加

class MainActivity : AppCompatActivity(R.layout.activity_main) {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
       AdmobUtil.loadAdmobInterstitialAd(this)
    }
}
  1. 现在显示加载的广告
class AdFragment: Fragment(R.layout.fragment_ad) {

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        AdmobUtil.showInterstitialAd()
    }
}

Java 版本

public static class AdmobUtil {

    private InterstitialAd interstitialAd = null;

    public void loadAdmobInterstitialAd(Context ontext) {

        interstitialAd = new InterstitialAd(context);

        interstitialAd.setAdUnitId(interstitialAdUnitId);

        interstitialAd.loadAd(new AdRequest.Builder().build());

    }

    public void showInterstitialAd() {
        if (interstitialAd.isLoaded) interstitialAd.show();
    }

}
public class MainActivity extends AppCompatActivity() {

    @Override
    public void onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main);
        AdmobUtil.loadAdmobInterstitialAd(this);
    }
}
public class AdFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_ad, container, false);
    }

    @Override
    public void onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        AdmobUtil.showInterstitialAd();
    }
}

【讨论】:

  • 谢谢兄弟。虽然是 Kotlin 代码,但这个概念很有帮助。
  • 好吧,我的回答有助于解决您的问题,那么请接受它作为正确的回答
【解决方案2】:

终于搞定了..

1:创建了一个公共类来保存我的 InterstitialAd 广告对象:

公共类全局变量{

public static InterstitialAd mInterstitialAd;

}

2:在 MainActivity 的 onCreate() 中初始化和加载添加:

globals.mInterstitialAd = new InterstitialAd(this);
    globals.mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
    globals.mInterstitialAd.loadAd(new AdRequest.Builder().build());

3:在目标片段的 onCreateView() 中显示广告:

if (!globals.mInterstitialAd.isLoaded())
        globals.mInterstitialAd.loadAd(new AdRequest.Builder().build());
    globals.mInterstitialAd.show();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    相关资源
    最近更新 更多