简体   繁体   English

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

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

I'd like to show an interstitial ad while going from MainActivity to Activity2.我想在从 MainActivity 转到 Activity2 时显示插页式广告。 Instead, the ad only shows when clicking back from Activity2 to the MainActivity.相反,广告仅在从 Activity2 单击返回 MainActivity 时显示。

Does anyone know what I've done wrong?有谁知道我做错了什么?

Thanks谢谢

I have a button in MainActivity that loads Activity2.我在加载 Activity2 的 MainActivity 中有一个按钮。 I have the following in the code for the button.我在按钮的代码中有以下内容。


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

    }

I thought I could solve the problem by replacing MainActivity.this with Activity2, but it get a red underline.我以为我可以通过将 MainActivity.this 替换为 Activity2 来解决问题,但它有一个红色下划线。 I've tried "Activity2," "Activity2.class" and "Activity2.java."我试过“Activity2”、“Activity2.class”和“Activity2.java”。

The below code is for loading and calling the ads.以下代码用于加载和调用广告。

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;
            }
        });

        }

I think you need to add changes like below way.我认为您需要添加如下方式的更改。

In MainActivity to write below codeMainActivity中编写如下代码

Add constant添加常量

public static final int REQUEST_CODE = 1;

Call Activity2 like below way像下面这样调用 Activity2

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

Now use onActivityResult to retrieve the result现在使用 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();
        }

    }

And Activity2 to write below code whenever you are press back key/button action每当您按下后退键/按钮操作时, 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