繁体   English   中英

为什么我的插页式广告在错误的时间(但在正确的位置)展示?

[英]Why does my interstitial ad show at the wrong time (but in the right place)?

我想在从 MainActivity 转到 Activity2 时显示插页式广告。 相反,广告仅在从 Activity2 单击返回 MainActivity 时显示。

有谁知道我做错了什么?

谢谢

我在加载 Activity2 的 MainActivity 中有一个按钮。 我在按钮的代码中有以下内容。


 if (mInterstitialAd != null) {
            mInterstitialAd.show(MainActivity.this);
        } else {
            Log.i(TAG, "Ad failed to load");

    }

我以为我可以通过将 MainActivity.this 替换为 Activity2 来解决问题,但它有一个红色下划线。 我试过“Activity2”、“Activity2.class”和“Activity2.java”。

以下代码用于加载和调用广告。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });
        loadInterstitial();



    public void loadInterstitial(){
        AdRequest adRequest = new AdRequest.Builder().build();
        InterstitialAd.load(this, getString(R.string.interstitial_ad_unit_id), adRequest, new             InterstitialAdLoadCallback() {

            @Override
            public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
                super.onAdLoaded(interstitialAd);
                Log.d(TAG, "Ad loaded successfully");
                mInterstitialAd = interstitialAd;
                mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
                    @Override
                    public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
                        super.onAdFailedToShowFullScreenContent(adError);
                        Log.d(TAG, "Ad failed to show");

                    }

                    @Override
                    public void onAdShowedFullScreenContent() {
                        super.onAdShowedFullScreenContent();
                        Log.d(TAG, "Ad shown successfully");
                        mInterstitialAd = null;

                    }


                    @Override
                    public void onAdDismissedFullScreenContent() {
                        super.onAdDismissedFullScreenContent();
                        Log.d(TAG, "Ad dismissed");
                    }
                });
            }

            @Override
            public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
                super.onAdFailedToLoad(loadAdError);
                Log.i(TAG, "onAdLoaded");
                mInterstitialAd = null;
            }
        });

        }

我认为您需要添加如下方式的更改。

MainActivity中编写如下代码

添加常量

public static final int REQUEST_CODE = 1;

像下面这样调用 Activity2

Intent intent = new Intent(MainActivity.this,
                Activity2.class);
        startActivityForResult(intent , REQUEST_CODE);

现在使用 onActivityResult 检索结果

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        try {
            super.onActivityResult(requestCode, resultCode, data);

            if (requestCode == REQUEST_CODE  && resultCode  == RESULT_OK) {

               loadInterstitial();
            }
        } catch (Exception ex) {
            Toast.makeText(Activity.this, ex.toString(),
                    Toast.LENGTH_SHORT).show();
        }

    }

每当您按下后退键/按钮操作时, Activity2都会编写下面的代码

Intent intent = getIntent();
intent.putExtra("key", value);
setResult(RESULT_OK, intent);
finish();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM