【问题标题】:How to show progress bar on button click until ads is loaded, After ads is loaded hide progress bar and show ads without button click button again如何在按钮点击时显示进度条,直到加载广告,加载广告后隐藏进度条并再次显示没有按钮点击按钮的广告
【发布时间】:2019-06-10 15:30:52
【问题描述】:

当我点击按钮时,进度条会显示但即使已加载也不显示广告。仅显示 Toast OnRewardedVideoAdsLoaded。我必须再次点击才能显示广告..

加载广告后,进度条停止但不显示广告。它唯一的吐司。 当我再次点击按钮时,广告正在显示..

公共类 MainActivity 扩展 AppCompatActivity 实现 RewardedVideoAdListener {

private ProgressBar progressBar;
private RewardedVideoAd mRewardedVideoAd;
private int coin;
private TextView bp;
private Button btn;


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


    MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");
    final Button btn = (Button) findViewById(R.id.btn);
    progressBar = (ProgressBar) findViewById(R.id.progressBar);
    progressBar.setVisibility(View.INVISIBLE);
    mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
    mRewardedVideoAd.setRewardedVideoAdListener(this);
    loadRewardedVideoAd();

    btn.setOnClickListener(new View.OnClickListener() {
        @Override

        public void onClick(View view) {
            progressBar.setVisibility(View.VISIBLE);

            showRewardedVideo();
            if (mRewardedVideoAd.isLoaded()) {

                mRewardedVideoAd.show();
            }

        }
    });


    bp = findViewById(R.id.bp);
    coin = 0;
    bp.setText(coin + "  BP");
}



private void showRewardedVideo() {

    if (mRewardedVideoAd.isLoaded()) {
        progressBar.setVisibility(View.INVISIBLE);
        mRewardedVideoAd.show();
    }
}




@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);

    savedInstanceState.putInt("coin", 0);

}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    int coin = savedInstanceState.getInt("coin");
}


@Override
public void onResume() {
    mRewardedVideoAd.resume(this);
    super.onResume();
}

@Override
public void onPause() {
    mRewardedVideoAd.pause(this);
    super.onPause();
}

@Override
public void onDestroy() {
    mRewardedVideoAd.destroy(this);
    super.onDestroy();
}
private void loadRewardedVideoAd() {
    if (!mRewardedVideoAd.isLoaded()) {
        mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build());
        mRewardedVideoAd.show();
    }
}



// "ca-app-pub-5399035702215687/5287697226"


private void addCoins(int coins) {
    coin += coins;
    bp.setText(coin + "  BP");
}

@Override
public void onRewardedVideoAdLoaded() {



    Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();

}

@Override
public void onRewardedVideoAdOpened() {
    Toast.makeText(this, "onRewardedVideoAdOPENED", Toast.LENGTH_SHORT).show();

}

@Override
public void onRewardedVideoStarted() {
    Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show();

}

@Override
public void onRewardedVideoAdClosed() {
    loadRewardedVideoAd();
    progressBar.setVisibility(View.INVISIBLE);
    btn.setVisibility(View.VISIBLE);
}

@Override
public void onRewarded(RewardItem reward) {
    Toast.makeText(this,
            String.format(" onRewarded! currency: %s amount: %d", reward.getType(),
                    reward.getAmount()),
            Toast.LENGTH_SHORT).show();
    addCoins(reward.getAmount());
}



@Override
public void onRewardedVideoAdLeftApplication()
{     btn.setVisibility(View.VISIBLE);
    progressBar.setVisibility(View.INVISIBLE);
}


@Override
public void onRewardedVideoAdFailedToLoad(int i) {
    Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show();
    progressBar.setVisibility(View.INVISIBLE);
    btn.setVisibility(View.VISIBLE);
}

@Override
public void onRewardedVideoCompleted() {
    Toast.makeText(this, "onRewardedVideoCompleted", Toast.LENGTH_SHORT).show();
    progressBar.setVisibility(View.INVISIBLE);
    btn.setVisibility(View.VISIBLE);

}


}

【问题讨论】:

    标签: android android-progressbar rewardedvideoad


    【解决方案1】:

    我现在很好地阅读了您的问题,我明白了问题所在。广告一旦准备就绪,您就不会显示它,您只是在单击按钮时检查它的准备情况。

    最好的方法如下:

      btn.setOnClickListener(new View.OnClickListener() {
            @Override
    
            public void onClick(View view) {
    
                  if(!mRewardedVideoAd.isLoaded()){
                      progressBar.setVisibility(View.VISIBLE);
                      Toast.makeText(this, "Ad is not loaded", Toast.LENGTH_SHORT).show();
                      mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build());
                  }
    
            }
        });
    
    @Override
    public void onRewardedVideoAdLoaded() {
            progressBar.setVisibility(View.INVISIBLE);
            mRewardedVideoAd.show();
            Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();
    
    }
    

    【讨论】:

    • 感谢您的回复...我已经尝试过此代码..它会自动显示广告。加载广告时...没有点击按钮...
    • 然后从onCreate()中删除loadRewardedVideoAd()
    • 我想要,当我点击按钮时,如果广告未加载,则在加载广告时显示 toast '广告未加载',然后在不按按钮的情况下显示广告再次跨度>
    • 检查编辑并按照我告诉你的从 onCreate() 中删除 loadRewardedVideoAd()。
    • 好的.. 我已经从 onCreate() 中删除了 loadRewardedVideoAd() 但即使点击了按钮也无法正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多