From 45deee664baef0b24924ff08e349b023a8a80415 Mon Sep 17 00:00:00 2001 From: oxidiert Date: Sat, 6 Sep 2025 20:34:01 +0200 Subject: [PATCH] fixed rotate screen bug --- app/src/main/AndroidManifest.xml | 2 +- app/src/main/java/com/dano/test1/MainActivity.kt | 13 +++++++++++-- app/src/main/res/layout/date_spinner.xml | 8 ++++---- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f2e6950..9e49029 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,7 +31,7 @@ + android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|screenLayout"> diff --git a/app/src/main/java/com/dano/test1/MainActivity.kt b/app/src/main/java/com/dano/test1/MainActivity.kt index 274c9aa..20c57eb 100644 --- a/app/src/main/java/com/dano/test1/MainActivity.kt +++ b/app/src/main/java/com/dano/test1/MainActivity.kt @@ -1,5 +1,6 @@ package com.dano.test1 +import android.content.res.Configuration import android.os.Bundle import androidx.appcompat.app.AppCompatActivity @@ -12,11 +13,20 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - // Initialize the opening screen handler and show the opening screen + // Opening Screen nur beim echten Start initialisieren. + // Durch configChanges wird onCreate bei Drehung NICHT erneut aufgerufen. openingScreenHandler = HandlerOpeningScreen(this) openingScreenHandler.init() } + // Wichtig: Bei Konfigurationsänderungen NICHT den Screen neu setzen. + // So bleibt man auf der aktuellen Frage/Seite. + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + // Kein setContentView(), kein openingScreenHandler.init() hier! + // Falls du Layout-Metriken bei Rotation neu berechnen willst, kannst du das gezielt hier tun. + } + /** * Starts the given questionnaire and attaches it to this activity. * @param questionnaire The questionnaire instance to start. @@ -44,7 +54,6 @@ class MainActivity : AppCompatActivity() { * Finish the questionnaire and return to the opening screen. */ fun finishQuestionnaire() { - // For example, switch back to the opening screen: isInQuestionnaire = false isFirstQuestionnairePage = false openingScreenHandler.init() diff --git a/app/src/main/res/layout/date_spinner.xml b/app/src/main/res/layout/date_spinner.xml index 45b38fb..c43eea1 100644 --- a/app/src/main/res/layout/date_spinner.xml +++ b/app/src/main/res/layout/date_spinner.xml @@ -68,12 +68,12 @@ android:id="@+id/date_spinner_year" android:layout_width="0dp" android:layout_height="wrap_content" - android:tag="year" android:gravity="start|center_vertical" - android:textAlignment="viewStart" android:paddingStart="8dp" + android:tag="year" + android:textAlignment="viewStart" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.932" + app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/question" app:layout_constraintWidth_percent="0.32" /> @@ -106,7 +106,7 @@ android:layout_height="wrap_content" android:layout_marginTop="8dp" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.932" + app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/date_spinner_year" app:layout_constraintWidth_percent="0.32" />