You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin安卓开发:Fragment中集成AdMob广告无法显示如何解决

核心问题修复

你代码的最明显错误是 onCreateView 方法里先执行了 return view,后面的移动广告初始化、广告加载逻辑全部不会执行,自然没有广告显示。
修正后的 SettingsFragment.kt 代码如下:

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment
    _binding = FragmentSettingsBinding.inflate(inflater, container, false)
    val view = binding.root
    // 把广告逻辑放到return之前
    MobileAds.initialize(context)
    val adRequest = AdRequest.Builder().build()
    binding.adView.loadAd(adRequest)
    return view
}

更规范的写法是把视图相关的加载逻辑放到 onViewCreated 中执行,避免生命周期时序问题:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    MobileAds.initialize(context)
    val adRequest = AdRequest.Builder().build()
    binding.adView.loadAd(adRequest)
}

其他排查点

  • 布局显示问题:你给AdView设置了android:layout_marginTop="450dp",小尺寸手机屏幕高度不足的情况下,AdView会被挤出可视区域,建议改用约束布局将AdView约束在屏幕底部,或者调整边距值。
  • AdView生命周期适配:Fragment生命周期变化时需要同步管理AdView的状态,添加如下代码避免内存泄漏、保证广告正常刷新:
override fun onResume() {
    super.onResume()
    binding.adView.resume()
}

override fun onPause() {
    super.onPause()
    binding.adView.pause()
}

override fun onDestroyView() {
    binding.adView.destroy()
    super.onDestroyView()
}
  • 错误排查:可以给AdView添加加载监听器,通过日志确认加载失败的具体原因,示例:
binding.adView.adListener = object : AdListener() {
    override fun onAdFailedToLoad(loadAdError: LoadAdError) {
        super.onAdFailedToLoad(loadAdError)
        Log.d("AD_ERROR", loadAdError.message.toString())
    }
}

内容的提问来源于stack exchange,提问作者Casper Stockman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:42:03