Как показывать межстраничную рекламу после 5 нажатий кнопки? (общие предпочтения)

Я пытался показать межстраничную рекламу после 5 нажатий кнопки, ниже мой код, который не работает, пожалуйста, кто-нибудь покажет мне, как это решить. Пробовал 2 способа, оба не работают.

PS: я новичок в разработке Android.




Первый код

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) {
					if (mInterstitialAd.isLoaded()) {
						mInterstitialAd.show();
						counter = 0;
					} else {
						counter++;
						stream(vidData);
						getDialog().dismiss();

					}

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



Второй код (общие предпочтения)

private 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() {

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

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

			@Override

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

					counter = 0;
					mInterstitialAd.show();

				} else {

					counter++;

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

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


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



Обновлен полный код

private int counter = 0;

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

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

		mInterstitialAd = new InterstitialAd(getActivity());

		mInterstitialAd.setAdUnitId("xxxxxxxxxxxxxxxxxx");

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

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

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

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

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

			}
		});

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

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

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

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

			@Override
			public void onClick(View v) {
				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

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

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

			@Override
			public void onClick(View v) {
				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
						getDialog().dismiss();
					}
				} else {
					counter++;
					getDialog().dismiss();
				}
			}
		});
		// Do something else
		return rootView;


person Agatha Jannet    schedule 19.03.2017    source источник
comment
Читать Оборванная еще проблема.   -  person Shahzain ali    schedule 19.03.2017
comment
Привет, спасибо. Пожалуйста, проверьте обновленный полный код, я следовал инструкциям Равиндера.   -  person Agatha Jannet    schedule 19.03.2017


Ответы (3)


Проблема в вашей логике, часть else должна идти с внешним if, проверьте мой код ниже:

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, пожалуйста, проверьте также синтаксические ошибки, их может быть одна или две.

person Ravinder Bhandari    schedule 19.03.2017
comment
Привет, Равиндер. Прежде всего, спасибо за помощь, но предоставленный вами код не работает, а это означает, что межстраничное объявление не отображается при нажатии кнопки. Пожалуйста, проверьте обновленный код. - person Agatha Jannet; 19.03.2017
comment
Добавьте журнал внутрь блока If(mInterstitialAd.isLoaded()) и проверьте, печатается ли он в logcat. Если да, то должно быть что-то не так с тем, как вы инициализировали рекламу admob, также убедитесь, что вы включили тестовую рекламу на панели инструментов Google admob. - person Ravinder Bhandari; 20.03.2017

Удалить counter = 0 после mInterstitialAd.show(); из условия if и поместите его в функцию onAdClosed(), см. пример ниже: mInterstitialAd.setAdListener(new AdListener() { @Override public void onAdClosed() { requestNewInterstitial(); counter=0; startNewGame(); } });

person Atul    schedule 17.04.2017

Попробуйте это, если это не работает, то, скорее всего, проблема в вашем рекламном коде.

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);
                            }
                        }
                    }
                });
    }
person Shahzain ali    schedule 19.03.2017
comment
по-прежнему реклама не загружается, я обновил свой полный код, вы его проверили? - person Agatha Jannet; 19.03.2017