android - 如何在按钮点击时显示进度条,直到加载广告,加载广告后隐藏进度条并再次显示没有按钮点击按钮的广告
问题描述
当我单击按钮时,进度条显示但即使已加载也不显示广告。仅显示 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);
}
}
解决方案
我现在很好地阅读了你的问题,我明白了问题所在。广告一旦准备就绪,您就不会显示它,您只是在单击按钮时检查它的准备情况。
最好的方法如下:
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();
}
推荐阅读
- php - 查询 Laravel Eloquent 多对多,其中所有 id 都相等
- django - 使用“添加更多”功能到页面(模板)而不提交现有表单(和值)并最终提交
- javascript - 带有函数的 onclick 不会在按钮单击时运行函数
- ios - 如何使用 Swift 启用和禁用基于 UITextView 文本长度的警报操作按钮
- css - 为什么“inline-block”会修剪元素内部末尾的空间?
- java - 使用 PageFactory 初始化 PageObjects 的不同方法
- reactjs - 当我关闭互联网连接时,它没有显示来自 NetInfo.isConnect 函数的错误值
- c# - 无法使用 cli 层在非托管 c++ 代码中编译托管 c# 代码
- python - 如何仅使用 random.randint() 随机化列表?(关闭)
- c# - 如何只处理最后一个任务并在c#中丢弃上一个任务