2017-07-15 7 views
1

Admobの報酬を与えられた動画広告をフラグメントに読み込めません。 私はこの2行AdMobリワードされた動画広告がAndroidのフラグメント内に読み込まれない

mAd = MobileAds.getRewardedVideoAdInstance(getActivity()); mAd.setRewardedVideoAdListener(this);

に問題があると思います以下のコードをご確認ください。 コードはアクティビティで正常に動作していますが、フラグメントでは機能しません。

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(); 
    } 
} 

答えて

0

変更しよう:

mAd = MobileAds.getRewardedVideoAdInstance(getContext()); 

私は同じコードを持っており、それが働いています。

1

このコードは私には役に立ちます。あなたは、私はそれはあなたのことを願ってXXXXXFragment.java

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-3940256099942544/5224354917", 
       new AdRequest.Builder().build()); 
    } 

の上側にOnRewardListenerを実装するために持っていけない、このコードで

はあなた

役立ちます
関連する問題