0

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

代码片段:

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

// 做一点事

}

4

2 回答 2

1

1.首先制作一个这样的对象类

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();
    }
}
于 2020-10-31T08:55:47.093 回答
0

终于搞定了。。

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

公共类全局变量{

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();
于 2020-10-31T09:22:54.313 回答