Android app with banner ad is crushed when the orientation is changed

0

I am new at creating mobile apps and I am trying to add a banner ad to my first app. Till now I used the test ad and it works fine in portrait and landscape orientation.

But when I am using my real adUnitId something goes wrong. The ad is visible in a portrait mode but when I want to rotate the screen, there is an information that unfortunately my app has stopped. What curious, it is not happend always. Sometimes it works perfectly.

I would like to add that when I was doing everything with implementation instructions from AdMob.

Do you have any ideas how to repair that?

@Ircover, @EzequielAdrian Here is my AndroidManifest.xml file:

<application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme"
            android:fullBackupContent="true">
        <activity android:name=".MainActivity2">
        </activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts"/>

        <meta-data
                android:name="com.google.android.gms.ads.APPLICATION_ID"
                android:value="ca-app-pub-some_numbers~some_numbers"/>

    </application>

Here is the fragment of activity_main.xml with the ad banner:

<com.google.android.gms.ads.AdView
            android:id="@+id/adView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            app:adSize="BANNER"
            app:adUnitId="ca-app-pub-6404370649958393/3303930979"
            app:layout_constraintTop_toBottomOf="@+id/button1"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.494"
            app:layout_constraintVertical_bias="0.672">
    </com.google.android.gms.ads.AdView>

Here is the fragment of MainActivity.kt:

class MainActivity : AppCompatActivity() {
    lateinit var mAdView : AdView

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        MobileAds.initialize(this) {}
        mAdView = findViewById(R.id.adView)
        val adRequest = AdRequest.Builder().build()
        mAdView.loadAd(adRequest)
    }
}

How it looks like before rotation, and after rotation.

@Ircover, here are logs from Logcat:

12-08 15:11:04.266 18313-18390/rand.random.randomizer E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
12-08 15:11:04.290 18313-18390/rand.random.randomizer E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
12-08 15:11:04.305 18313-18390/rand.random.randomizer E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
12-08 15:11:04.318 18313-18390/rand.random.randomizer E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
12-08 15:11:04.332 18313-18390/rand.random.randomizer E/eglCodecCommon: glUtilsParamSize: unknow param 0x000085b5
12-08 15:11:04.357 18313-18313/rand.random.randomizer W/ResourceType: No package identifier when getting value for resource number 0x00000001
12-08 15:11:04.360 18313-18313/rand.random.randomizer D/AndroidRuntime: Shutting down VM
12-08 15:11:04.362 18313-18313/rand.random.randomizer E/AndroidRuntime: FATAL EXCEPTION: main
    Process: rand.random.randomizer, PID: 18313
    java.lang.RuntimeException: Unable to start activity ComponentInfo{rand.random.randomizer/rand.random.randomizer.MainActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x1
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
        at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3912)
        at android.app.ActivityThread.access$900(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x1
        at android.content.res.Resources.getValue(Resources.java:1233)
        at androidx.appcompat.widget.ResourceManagerInternal.loadDrawableFromDelegates(ResourceManagerInternal.java:252)
        at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:139)
        at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:132)
        at androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:104)
        at androidx.appcompat.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:86)
        at androidx.appcompat.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:94)
        at rand.random.randomizer.MainActivity.onCreate(MainActivity.kt:32)
        at android.app.Activity.performCreate(Activity.java:5937)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
        at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3912) 
        at android.app.ActivityThread.access$900(ActivityThread.java:144) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5221) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
12-08 15:11:10.358 18313-18390/rand.random.randomizer D/EGL_emulation: eglMakeCurrent: 0xa2afd100: ver 2 0 (tinfo 0xa2adb6a0)
android
kotlin
rotation
admob
asked on Stack Overflow Dec 7, 2020 by Marta Wojnowska • edited Dec 8, 2020 by Marta Wojnowska

1 Answer

0

You might need to override the onConfigurationChanged method and write codes to refresh the add view there.

answered on Stack Overflow Dec 7, 2020 by AlexM • edited Dec 7, 2020 by AlexM

User contributions licensed under CC BY-SA 3.0