我们目前正在构建一个应用程序,其中包括AdMob奖励的视频系统。应用程序有一个MainActivity,并且有构建在其上的片段。每个片段都有一个按钮,每个片段都实现了"RewardedVideoAdListener“。单击按钮时,将加载并显示奖励视频。现在的问题是,每个按钮都应该有不同类型的奖励。
这两个片段看起来像这样;
public class FragmentShop extends Fragment implements RewardedVideoAdListener
{
private RewardedVideoAd rewardedVideoAd;
private Button rewardButton;
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rewardButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(rewardedVideoAd.isLoaded()){
rewardedVideoAd.show();
rewardButton.setVisibility(View.INVISIBLE);
}
else {
Toast.makeText(view.getContext(),"Try again!",Toast.LENGTH_SHORT).show();
loadRewardedVideoAd();
}
}
});
}
private void loadRewardedVideoAd() {
rewardedVideoAd.loadAd("---", //there is our key
new AdRequest.Builder().build());
}
@Override
public void onRewarded(RewardItem rewardItem) {
//Some database actions.
loadRewardedVideoAd();
}
}问题是,无论我们单击哪个按钮,都只能运行2号片段中的onRewarded()函数。那么我们如何构建一个结构,让每个片段运行自己的onRewarded()函数。我们应该首先使用onRewardedVideoCompleted()吗?
发布于 2019-05-20 02:52:52
应用以下内容:
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);
rewardButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// todo
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();
}
@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());
}https://stackoverflow.com/questions/56209326
复制相似问题