Admob 奖励视频广告无法加载片段。
我认为这两行有问题
mAd = MobileAds.getRewardedVideoAdInstance(getActivity());
mAd.setRewardedVideoAdListener(this);
请检查下面的代码。
该代码在 Activity 中运行良好,但在 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();
}
}
这段代码对我有用。
使用此代码,您不必在 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());
}
我希望它能帮助你
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)