[英]AdMob Rewarded Video Ads Failed to Load inside Fragment in Android
Admob rewarded video ads fail to load in fragment. 奖励Admob的视频广告无法分段加载。 I think there is problem in these two lines
我认为这两行有问题
mAd = MobileAds.getRewardedVideoAdInstance(getActivity());
mAd.setRewardedVideoAdListener(this);
Please check the code below. 请检查下面的代码。 The code is working fine in Activity but doesn't work in Fragment.
该代码在“活动”中工作正常,但在“片段”中无效。
public class FragmentWatchEarn extends Fragment implements RewardedVideoAdListener {
int coins = 0;
View rootView;
Button bAdmob;
TextView tvCoins;
private RewardedVideoAd mAd;//Admob
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_watch_earn, container, false);
bAdmob = (Button) rootView.findViewById(R.id.btnAdmob);
admobAdsPart();
return rootView;
}
private void admobAdsPart() {
mAd = MobileAds.getRewardedVideoAdInstance(getActivity()); //Might me Problem in this line
mAd.setRewardedVideoAdListener(this); //Might me Problem in this line
loadAd();
bAdmob.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(mAd.isLoaded()){
mAd.show();
}else {
Toast.makeText(getActivity(), "Ad not yet loaded", Toast.LENGTH_SHORT).show();
loadAd();
}
}
});
}
private void loadAd() {
if (!mAd.isLoaded()) {
mAd.loadAd("ca-app-pub-5059726881726792/4575431467", new AdRequest.Builder().build());
}
}
@Override
public void onRewardedVideoAdLoaded() {
}
@Override
public void onRewardedVideoAdOpened() {
}
@Override
public void onRewardedVideoStarted() {
}
@Override
public void onRewardedVideoAdClosed() {
}
@Override
public void onRewarded(RewardItem rewardItem) {
coins = coins + 20;
myRef.setValue("" + coins);
}
@Override
public void onRewardedVideoAdLeftApplication() {
}
@Override
public void onRewardedVideoAdFailedToLoad(int i) {
Toast.makeText(getActivity(), "Admob Ad Failed to load", Toast.LENGTH_SHORT).show();
}
}
This code works for me. 该代码对我有用。
With this code you dont have to implement the OnRewardListener in the top side of your XXXXXFragment.java 使用此代码,您不必在XXXXXFragment.java的顶部实现OnRewardListener。
private RewardedVideoAd mRewardedVideoAd;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
rootView = inflater.inflate(R.layout.fragment_main, container, false);
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(getContext());
mRewardedVideoAd.setRewardedVideoAdListener(rewardedVideoAdListener);
CircleImageView circleImageView = (CircleImageView)rootView.findViewById(R.id.btn_play);
circleImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
loadRewardedVideoAd();
}
});
return rootView;
}
RewardedVideoAdListener rewardedVideoAdListener = new RewardedVideoAdListener() {
@Override
public void onRewardedVideoAdLoaded() {
Toast.makeText(getActivity(), "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdOpened() {
Toast.makeText(getActivity(), "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoStarted() {
Toast.makeText(getActivity(), "onRewardedVideoStarted", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdClosed() {
Toast.makeText(getActivity(), "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show();
////// UpdateDataBase
}
@Override
public void onRewarded(RewardItem reward) {
Toast.makeText(getActivity(), getString(R.string.on_rewarded_video) + " " + reward.getAmount() + " " + reward.getType(), Toast.LENGTH_LONG).show();
// Reward the user.
}
@Override
public void onRewardedVideoAdLeftApplication() {
Toast.makeText(getActivity(), "onRewardedVideoAdLeftApplication", Toast.LENGTH_SHORT).show();
}
@Override
public void onRewardedVideoAdFailedToLoad(int i) {
Toast.makeText(getActivity(), "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show();
}
};
private void loadRewardedVideoAd() {
mRewardedVideoAd.loadAd("ca-app-pub-#################/##########",
new AdRequest.Builder().build());
}
I hope it can helps you 我希望它可以帮助您
Try to change: 尝试更改:
mAd = MobileAds.getRewardedVideoAdInstance(getContext());
I have same code and it's working. 我有相同的代码,并且可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.