2017-03-19 2 views
0

5つのボタンのクリック後にインタースティシャル広告を表示しようとしましたが、私のコードは機能しません。私は2つの方法を試しましたが、どちらも動作していません。5回のクリックでインタースティシャル広告を表示するにはどうすればよいですか? (共有設定)

PS:私はアンドロイド開発には初めてです。




最初のコード

int counter = 0; 
 

 
... 
 

 

 

 
\t \t FragmentManager fm = getFragmentManager(); 
 
\t \t FragmentTransaction ft = fm.beginTransaction(); 
 

 
\t \t Button play_video = (Button) rootView.findViewById(R.id.play_video); 
 
\t \t play_video.setOnClickListener(new View.OnClickListener() { 
 
    
 
\t \t \t @Override 
 
     
 
\t \t \t public void onClick(View v) { 
 
\t \t \t \t if (counter == 5) { 
 
\t \t \t \t \t if (mInterstitialAd.isLoaded()) { 
 
\t \t \t \t \t \t mInterstitialAd.show(); 
 
\t \t \t \t \t \t counter = 0; 
 
\t \t \t \t \t } else { 
 
\t \t \t \t \t \t counter++; 
 
\t \t \t \t \t \t stream(vidData); 
 
\t \t \t \t \t \t getDialog().dismiss(); 
 

 
\t \t \t \t \t } 
 

 
\t \t \t \t \t if (!mInterstitialAd.isLoading() && !mInterstitialAd.isLoaded()) { 
 
\t \t \t \t \t \t AdRequest adRequest = new AdRequest.Builder().build(); 
 
\t \t \t \t \t \t mInterstitialAd.loadAd(adRequest); 
 
\t \t \t \t \t } 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t });



第二の符号(共有Preferance)

private int counter = 0; 
 

 
..... 
 

 
FragmentManager fm = getFragmentManager(); 
 
\t \t FragmentTransaction ft = fm.beginTransaction(); 
 

 
\t \t Button play_video = (Button) rootView.findViewById(R.id.play_video); 
 
\t \t play_video.setOnClickListener(new View.OnClickListener() { 
 

 
\t \t \t Context context = getActivity(); 
 
\t \t \t SharedPreferences preferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE); 
 
\t \t \t SharedPreferences.Editor editor = preferences.edit(); 
 

 
\t \t \t int counter = preferences.getInt("CounterR", 0); 
 

 
\t \t \t @Override 
 

 
\t \t \t public void onClick(View v) { 
 
\t \t \t \t if (mInterstitialAd.isLoaded() & counter >= 5) { 
 

 
\t \t \t \t \t counter = 0; 
 
\t \t \t \t \t mInterstitialAd.show(); 
 

 
\t \t \t \t } else { 
 

 
\t \t \t \t \t counter++; 
 

 
\t \t \t \t \t stream(vidData); 
 
\t \t \t \t \t getDialog().dismiss(); 
 

 
\t \t \t \t } 
 
\t \t \t \t editor.putInt("CounteR", counter); 
 
\t \t \t \t editor.commit(); 
 

 

 
\t \t \t \t if (!mInterstitialAd.isLoading() && !mInterstitialAd.isLoaded()) { 
 
\t \t \t \t \t AdRequest adRequest = new AdRequest.Builder().build(); 
 
\t \t \t \t \t mInterstitialAd.loadAd(adRequest); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t });



更新完全なコード

private int counter = 0; 
 

 
\t @Override 
 
\t public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
 
\t \t View rootView = inflater.inflate(R.layout.vid_alert, container, false); 
 

 
\t \t close_dialog = (Button) findViewById(R.id.close_dialog); 
 

 
\t \t mInterstitialAd = new InterstitialAd(getActivity()); 
 

 
\t \t mInterstitialAd.setAdUnitId("xxxxxxxxxxxxxxxxxx"); 
 

 
\t \t AdRequest adRequest = new AdRequest.Builder().build(); 
 

 
\t \t // Load ads into Interstitial Ads 
 
\t \t mInterstitialAd.loadAd(adRequest); 
 

 
\t \t // Create and set AdListener for interstitial 
 
\t \t mInterstitialAd.setAdListener(new AdListener() { 
 

 
\t \t \t public void onAdClosed() { 
 
\t \t \t \t // When user closes ad end this activity (go back to first 
 
\t \t \t \t // activity) 
 
\t \t \t \t finish(); 
 
\t \t \t } 
 

 
\t \t \t private void finish() { 
 
\t \t \t \t // TODO Auto-generated method stub 
 

 
\t \t \t } 
 
\t \t }); 
 

 
\t \t getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
 
\t \t Bundle mArgs = getArguments(); 
 
\t \t final String vidData = mArgs.getString("vid_data"); 
 
\t \t final String vidID = mArgs.getString("vid_id"); 
 

 
\t \t FragmentManager fm = getFragmentManager(); 
 
\t \t FragmentTransaction ft = fm.beginTransaction(); 
 

 
\t \t Context context = getActivity(); 
 
\t \t SharedPreferences preferences = context.getSharedPreferences("MyPreferences", Context.MODE_PRIVATE); 
 
\t \t SharedPreferences.Editor editor = preferences.edit(); 
 

 
\t \t Button stream_video = (Button) rootView.findViewById(R.id.stream_video); 
 
\t \t stream_video.setOnClickListener(new View.OnClickListener() { 
 

 
\t \t \t @Override 
 
\t \t \t public void onClick(View v) { 
 
\t \t \t \t if (counter == 5) { 
 
\t \t \t \t \t if (mInterstitialAd.isLoaded()) { 
 
\t \t \t \t \t \t mInterstitialAd.show(); 
 
\t \t \t \t \t \t AdRequest adRequest = new AdRequest.Builder().build(); 
 
\t \t \t \t \t \t mInterstitialAd.loadAd(adRequest); 
 
\t \t \t \t \t \t counter = 0; 
 
\t \t \t \t \t } else { 
 
\t \t \t \t \t \t // means interstitial not yet loaded,so make a load 
 
\t \t \t \t \t \t // request 
 
\t \t \t \t \t \t AdRequest newadRequest = new AdRequest.Builder().build(); 
 
\t \t \t \t \t \t mInterstitialAd.loadAd(newadRequest); 
 
\t \t \t \t \t \t // as nothing will happen when we get inside this else 
 
\t \t \t \t \t \t // statement, you should call the stream method from 
 
\t \t \t \t \t \t // here too 
 

 
\t \t \t \t \t \t streamFB(vidData); 
 
\t \t \t \t \t \t getDialog().dismiss(); 
 

 
\t \t \t \t \t } 
 
\t \t \t \t } else { 
 
\t \t \t \t \t counter++; 
 
\t \t \t \t \t streamFB(vidData); 
 
\t \t \t \t \t getDialog().dismiss(); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t }); 
 
\t \t Button close_dialog = (Button) rootView.findViewById(R.id.close_dialog); 
 
\t \t close_dialog.setOnClickListener(new View.OnClickListener() { 
 

 
\t \t \t @Override 
 
\t \t \t public void onClick(View v) { 
 
\t \t \t \t if (counter == 5) { 
 
\t \t \t \t \t if (mInterstitialAd.isLoaded()) { 
 
\t \t \t \t \t \t mInterstitialAd.show(); 
 
\t \t \t \t \t \t AdRequest adRequest = new AdRequest.Builder().build(); 
 
\t \t \t \t \t \t mInterstitialAd.loadAd(adRequest); 
 
\t \t \t \t \t \t counter = 0; 
 
\t \t \t \t \t } else { 
 
\t \t \t \t \t \t // means interstitial not yet loaded,so make a load 
 
\t \t \t \t \t \t // request 
 
\t \t \t \t \t \t AdRequest newadRequest = new AdRequest.Builder().build(); 
 
\t \t \t \t \t \t mInterstitialAd.loadAd(newadRequest); 
 
\t \t \t \t \t \t // as nothing will happen when we get inside this else 
 
\t \t \t \t \t \t // statement, you should call the stream method from 
 
\t \t \t \t \t \t // here too 
 
\t \t \t \t \t \t getDialog().dismiss(); 
 
\t \t \t \t \t } 
 
\t \t \t \t } else { 
 
\t \t \t \t \t counter++; 
 
\t \t \t \t \t getDialog().dismiss(); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t }); 
 
\t \t // Do something else 
 
\t \t return rootView;

+0

ダングリングその他の問題を読み取ります。 –

+0

こんにちは、ありがとう、更新された完全なコードを確認してください、私はラヴィンダーの指示に従っています。 –

答えて

1

問題は、あなたのロジックであり、それ以外の部分が出てくるはずですもし、私のコードを以下にチェックしてください:

if (counter == 5) { 
      if (mInterstitialAd.isLoaded()) { 
       mInterstitialAd.show(); 
       AdRequest adRequest = new AdRequest.Builder().build(); 
       mInterstitialAd.loadAd(adRequest); 
       counter = 0; 
      }else{ 
       // means interstitial not yet loaded,so make a load request 
       AdRequest newadRequest = new AdRequest.Builder().build(); 
       mInterstitialAd.loadAd(newadRequest); 
       // as nothing will happen when we get inside this else statement, you should call the stream method from here too 
       stream(vidData); 
       getDialog().dismiss(); 
      } 
     }else { 
      counter++; 
      stream(vidData); 
      getDialog().dismiss(); 
     } 

あなたのonclickメソッドでこのコードを移動してください。それがうまくいけば、ここで直接stackoverflowで編集してください、構文エラーもチェックしてください、1つまたは2つがあるかもしれません。

+0

こんにちは、Ravinder、まずはお手伝いしてくれてありがとうございますが、提供したコードは機能していません。つまり、インタースティシャル広告はボタンクリックで表示されません。更新されたコードを確認してください。 –

+0

内部にログを追加するIf(mInterstitialAd.isLoaded())をブロックし、logcatで印刷されるかどうかを確認します。はいの場合は、広告を初期化した方法に間違いがあります。また、Google AdMobダッシュボードでテスト広告を有効にしていることを確認してください。 –

0

広告コードに問題がある可能性があります。

int counter = 0; 

     ... 



       FragmentManager fm = getFragmentManager(); 
       FragmentTransaction ft = fm.beginTransaction(); 

       Button play_video = (Button) rootView.findViewById(R.id.play_video); 
       play_video.setOnClickListener(new View.OnClickListener() { 

        @Override 

        public void onClick(View v) { 
         if (counter != 5) { 
          counter++; 
          stream(vidData); 
          getDialog().dismiss(); 
          } 
         else if (counter ==5){ 
          if (mInterstitialAd.isLoaded()) { 
           mInterstitialAd.show(); 
           counter = 0; 
          } 
          } 

          if (!mInterstitialAd.isLoading() && !mInterstitialAd.isLoaded()) { 
           AdRequest adRequest = new AdRequest.Builder().build(); 
           mInterstitialAd.loadAd(adRequest); 
          } 
         } 
        } 
       }); 
    } 
+0

まだ広告は読み込まれていません。私は完全なコードを更新しました。あなたはそれをチェックしましたか? –

+0

はあなたのログを共有します。 –

0

mInterstitialAd.show()の後にcounter = 0を削除します。 if条件から取得し、onAdClosed()関数に配置します。 mInterstitialAd.setAdListener(new AdListener() { @Override public void onAdClosed() { requestNewInterstitial(); counter=0; startNewGame(); } });

関連する問題