Java 如何在奖励后自动关闭奖励广告[Android Studio]

Java 如何在奖励后自动关闭奖励广告[Android Studio],java,android-studio,Java,Android Studio,所以我试图让它在奖励用户后自动关闭广告,这就是我目前得到的 请记住,我对android studio和整个java都是新手。如果它们是间隔的,则采用不同的方法 private RewardedVideoAd mAd; AdView adView; void init_admob(){ adView = (AdView) findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().setRequ

所以我试图让它在奖励用户后自动关闭广告,这就是我目前得到的

请记住,我对android studio和整个java都是新手。如果它们是间隔的,则采用不同的方法

private RewardedVideoAd mAd;

AdView adView;
void init_admob(){
    adView = (AdView) findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().setRequestAgent("android_studio:ad_template").build();
    adView.loadAd(adRequest);
    mAd = MobileAds.getRewardedVideoAdInstance(this);
    mAd.setRewardedVideoAdListener(this);
    loadRewardedVideoAd();
}


public void onRewarded(RewardItem reward) {
    Toast.makeText(this, reward.getAmount()+ " " +getString(R.string.points_received), Toast.LENGTH_SHORT).show();
    award(reward.getAmount(),getString(R.string.admob_credit));
    exitAd();
}


public void exitAd() {
    //dispatchKeyEvent(new KeyEvent (KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); Tried But didn't work (No Errors Just didn't work)
    //dispatchKeyEvent(new KeyEvent (KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK)); Tried but didn't work (No Errors Just didn't work)
    try {
        LinearLayout linLay = (LinearLayout) findViewById(R.id.adView);
        linLay.removeView(adView);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
linLay的错误

java.lang.ClassCastException: com.google.android.gms.ads.AdView cannot be cast to android.widget.LinearLayout

因此,我真的不知道还有什么可以尝试,或者在广告获得回报后,如何关闭AdView,也不知道如何安抚任何帮助

我认为这是不可能的。这在法律上也是不对的。当你显示广告时,你应该等待用户单击或取消广告。如果你以编程方式关闭广告,这将意味着你有效地强迫用户取消广告。(这可能对用户有好处,但从广告商的角度考虑)

你无法在应用程序中关闭广告,但我已经完成了以下操作

private fun showRewardedVideo() {
    if (mRewardedAd.isLoaded) {
      mRewardedAd.show(
              this,
              object : RewardedAdCallback() {
                  override fun onUserEarnedReward(
                          rewardItem: RewardItem
                  ) {
                      Toast.makeText(this@MainActivity, "onUserEarnedReward", Toast.LENGTH_LONG).show()
                      addCoins(rewardItem.amount)
                     // come back to ad activity
                      startActivity(Intent(this@MainActivity, MainActivity2::class.java))
                  }


您的
adView
linLay
都参考
findViewById(R.id.adView)
。所以
linLay.removeView(adView)表示从自身中移除自身,这是不可能的。您必须找到包含
adView
的父视图,并在父视图上调用
removeView(adView)
。@RickyMo在哪里可以找到此父视图?这是布局文件中包含
adView
的视图。或者您可以简单地执行以下操作:
((视图组)adView.getParent()).removeView(adView)ViewGroup linLay=(ViewGroup)adView.getParent();linLay.removeView(adView)