Wyświetlanie reklamy pełnoekranowej AdMob i przechodzenie do nowej aktywności

0

Witam.

Mam mały problem. Mianowicie po przyciśnięciu przycisku, który ma za zadanie jednocześnie wyświetlić reklamę i przejść do nowej aktywności w pierwszej kolejności otwiera nową aktywność bez reklamy, a po powrocie i ponownym kliknięciu wyświetlana jest reklama ale nie otwiera się aktywność i na dodatek nie odznacza zaznaczenia przycisku co powoduje niemożność ponownego kliknięcia.

Kod funkcji odpowiedzialnej za otwarcie nowej aktywności i reklamy.

public void loadSecondActivity(View view){
        Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
        RadioButton radioButton = (RadioButton) findViewById(R.id.rbSecondActivity);
        radioButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                } else {
                    Log.d("TAG", "The interstitial wasn't loaded yet.");
                }
            }
        });
        startActivity(intent);
        radioButton.setChecked(false);
    }
0

Gdzie jest wywoływana metoda loadSecondActivity?

0
Michał Sikora napisał(a):

Gdzie jest wywoływana metoda loadSecondActivity?

Na końcu głównej klasy poza metodą OnCreate

0

Nie wiem co to znaczy. Pokaż kod, który wywołuje tę metodę.

0
public class FirstActivity extends AppCompatActivity {

    private InterstitialAd mInterstitialAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first_activity);

        // reklama cały ekran
        MobileAds.initialize(this, " ca-app-pub-3940256099942544~3347511713");

        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
        mInterstitialAd.loadAd(new AdRequest.Builder().build());

    }
    public void loadSecondActivity(View view){
        Intent intent = new Intent(FirstActivity.this, SecondActivity.class);

        RadioButton radioButton = (RadioButton) findViewById(R.id.rbSecondActivity);

        radioButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                } else {
                    Log.d("TAG", "The interstitial wasn't loaded yet.");
                }
            }
        });
        startActivity(intent);
        radioButton.setChecked(false);
    }

}
<RadioButton
                android:id="@+id/tvSecondActivity"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentStart="true"
                android:onClick="loadSecondActivity"
                android:paddingBottom="@dimen/Padding_top_bottom_tv_rb"
                android:paddingTop="@dimen/Padding_top_bottom_tv_rb"
                android:text="@string/txtSecondActivity"
                android:textSize="@dimen/Content_txt_size" />
0

No ok. Czyli nie wiesz, co robisz. Zakładam, że masz w XMLu coś w ten deseń.

<RadioButton
  android:id="@+id/rbSecondActivity"
  android:onClick="loadSecondActivity" />

android:onClick="loadSecondActivity" robi za Ciebie mniej więcej coś takiego.

RadioButton radioButton = (RadioButton) findViewById(R.id.rbSecondActivity);
radioButton.setOnClickListener(new View.OnClickListener() {
  @Override public void onClick(View v) {
    loadSecondActivity(v);
  }
});

Wiedząc, że kontrolki mogą mieć jednocześnie ustawiony tylko jeden View.OnClickListener zastanów się, dlaczego Twój kod nie działa.

0

A nie dzieje się tak, że View.OnClickListener łapie tylko jedno zdarzenie, które wywołuje metodę. A metoda wykonuje się cała, nawet jeśli ma kilka różnych działań ???

0

View.OnClickListener nie łapie zdarzeń. On wykonuje, to co ma zaimplementowane w metodzie onClick(View view) po naciśnięciu kontrolki. Naturalnie po ustawieniu go na tej kontrolce.

0

Czyli zamiast onClick(View v) stworzyć inną metodę wyświetlającą reklamę i wywołać ją za pomocą radioButton.showContextMenu(nazwaNowejMetody); ???

0

A czemu akurat showContextMenu? I gdzie w dokumentacji showContextMenu przyjmuje jako argument nazwę metody?

0

To gdzie szukać informacji jak to zrobić bo przeglądałem dokumentacje i nic nie mogłem znaleźć.

1

Chcesz, żeby cała akcja działa się po kliknięciu. Ustaw w takim razie jeden View.OnClickListener na swoim przycisku, który będzie ją wykonywał w całości. W tej chwili najpierw ustawiasz ten z XMLa a po kliknięciu ten z kodu.

Natomiast sprawa z "zablokowanym" przyciskiem, to już inny problem, którego w obecnym kodzie nie widzę.

0

Dobra. Zaczęło działać tak jak chciałem.
Teraz kod metody wygląda tak

public void loadSecondActivity(View view){
        Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
        RadioButton radioButton = (RadioButton) findViewById(R.id.rbSecondActivity);
        startActivity(intent);
                 if (mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                } else {
                    Log.d("TAG", "The interstitial wasn't loaded yet.");
                }
        radioButton.setChecked(false);
    }

Dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1