0

J'ai une application de test qui a ses questions stockées dans une base de données. My FragmentActivity contient un fragment, qui est remplacé lors de la sélection d'une nouvelle question à partir de l'AppBar. Lorsque je sélectionne une nouvelle question environ 30 fois, FragmentActivity se ferme de façon inattendue et me ramène à l'activité précédente qui était de retour dans la pile.après avoir appelé environ 30 fois fragmentTransaction.replace() le FragmentActivity se ferme de manière inattendue

Sur mon Logcat au niveau Verbose, je ne vois rien de lié avec mon Application pourquoi c'est arrivé.

Mon code xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/mainLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<RelativeLayout 
    android:id="@+id/fragment_container" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:background="@drawable/buttonshape" 
    android:orientation="horizontal"> 

    <HorizontalScrollView 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1"> 

     <LinearLayout 
      android:id="@+id/linearLayoutAppbar" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="horizontal"> 

     </LinearLayout> 
    </HorizontalScrollView> 

    <ImageView 
     android:layout_width="50dp" 
     android:layout_height="match_parent" 
     android:src="@drawable/s202_background" /> 
</LinearLayout> 

Le RelativeLayout est toujours être remplacé par un fragment lors de l'appel fragmentTransaction.replace(); Dans le LinearLayout ci-dessous est mon AppBar qui a des boutons créés par programme représentant chaque question dans la base de données. Lorsqu'un bouton est cliqué, OnClickListener est appelé et identifie le bouton qui est cliqué puis, dans une nouvelle méthode, appelle fragmentTransaction.replace(); Voici le code de cette méthode:

private void question1() { 
    testPrasanjaCursor = BazaNaPrasanja.testDatabase.query(VozackaDbContract.TABLE_NAME_TABELA_TEST, null, null, null, null, null, null); 
    fragmentTransaction = fragmentManager.beginTransaction(); 
    testPrasanjaCursor.moveToPosition(0); 

    fragmentTransaction.replace(R.id.fragment_container, fragmentZnaci4); 
    fragmentTransaction.commit(); 
    testPrasanjaCursor.close(); 
} 

Je ne sais pas si la base de données SQLite est à l'origine ou la FragmentManager parce que je ne dispose d'aucune information concernant mon appliaction dans le verbeux.

EDIT: Logcat ajouté, voici tous les logcat depuis que je cliquez sur Exécuter Emulator jusqu'à ce qu'il ferme la FragmentActivity:

12-11 13:33:48.802 1722-1722/? I/art: Not late-enabling -Xcheck:jni (already on) 
12-11 13:33:48.803 1722-1722/? W/art: Unexpected CPU variant for X86 using defaults: x86_64 
12-11 13:33:48.906 1722-1722/mojavozacka.testovi_za_vozacka_dozvola W/System: ClassLoader referenced unknown path: /data/app/mojavozacka.testovi_za_vozacka_dozvola-2/lib/x86_64 
12-11 13:33:48.918 1722-1722/mojavozacka.testovi_za_vozacka_dozvola I/InstantRun: Instant Run Runtime started. Android package is mojavozacka.testovi_za_vozacka_dozvola, real application class is null. 
12-11 13:33:49.203 1722-1722/mojavozacka.testovi_za_vozacka_dozvola W/System: ClassLoader referenced unknown path: /data/app/mojavozacka.testovi_za_vozacka_dozvola-2/lib/x86_64 
12-11 13:33:49.353 1722-1722/mojavozacka.testovi_za_vozacka_dozvola W/art: Verification of java.lang.Object mojavozacka.testovi_za_vozacka_dozvola.PocetnaActivity.access$super(mojavozacka.testovi_za_vozacka_dozvola.PocetnaActivity, java.lang.String, java.lang.Object[]) took 110.107ms 
12-11 13:33:49.605 1722-1729/mojavozacka.testovi_za_vozacka_dozvola W/art: Suspending all threads took: 53.041ms 
12-11 13:33:49.966 1722-1752/mojavozacka.testovi_za_vozacka_dozvola D/NetworkSecurityConfig: No Network Security Config specified, using platform default 
12-11 13:33:50.168 1722-1722/mojavozacka.testovi_za_vozacka_dozvola I/SQLiteAssetHelper: successfully opened database vozacka.db 
12-11 13:33:50.170 1722-1722/mojavozacka.testovi_za_vozacka_dozvola I/SQLiteAssetHelper: successfully opened database test.db 
12-11 13:33:50.177 1722-1734/mojavozacka.testovi_za_vozacka_dozvola I/art: Background sticky concurrent mark sweep GC freed 10882(1917KB) AllocSpace objects, 11(220KB) LOS objects, 0% free, 45MB/45MB, paused 4.735ms total 215.229ms 
12-11 13:33:50.319 1722-1778/mojavozacka.testovi_za_vozacka_dozvola I/OpenGLRenderer: Initialized EGL, version 1.4 
12-11 13:33:50.319 1722-1778/mojavozacka.testovi_za_vozacka_dozvola D/OpenGLRenderer: Swap behavior 1 
12-11 13:33:50.337 1722-1778/mojavozacka.testovi_za_vozacka_dozvola E/EGL_emulation: tid 1778: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH) 
12-11 13:33:50.337 1722-1778/mojavozacka.testovi_za_vozacka_dozvola W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x7d21b2f6f780, error=EGL_BAD_MATCH 
12-11 13:33:50.415 1722-1734/mojavozacka.testovi_za_vozacka_dozvola I/art: Background partial concurrent mark sweep GC freed 10885(956KB) AllocSpace objects, 6(120KB) LOS objects, 8% free, 44MB/48MB, paused 19.305ms total 217.880ms 
12-11 13:33:53.844 1722-1722/mojavozacka.testovi_za_vozacka_dozvola I/SQLiteAssetHelper: successfully opened database vozacka.db 
12-11 13:33:53.858 1722-1722/mojavozacka.testovi_za_vozacka_dozvola I/SQLiteAssetHelper: successfully opened database test.db 
12-11 13:33:53.866 1722-1734/mojavozacka.testovi_za_vozacka_dozvola W/art: Suspending all threads took: 7.410ms 
12-11 13:33:53.962 1722-1778/mojavozacka.testovi_za_vozacka_dozvola E/EGL_emulation: tid 1778: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH) 
12-11 13:33:53.962 1722-1778/mojavozacka.testovi_za_vozacka_dozvola W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x7d21b2f6f040, error=EGL_BAD_MATCH 
12-11 13:33:55.979 1722-1729/mojavozacka.testovi_za_vozacka_dozvola W/art: Suspending all threads took: 15.611ms 
12-11 13:33:56.304 1722-1778/mojavozacka.testovi_za_vozacka_dozvola E/EGL_emulation: tid 1778: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH) 
12-11 13:33:56.304 1722-1778/mojavozacka.testovi_za_vozacka_dozvola W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x7d21b2f6f780, error=EGL_BAD_MATCH 
12-11 13:33:58.573 1722-1722/mojavozacka.testovi_za_vozacka_dozvola W/IInputConnectionWrapper: finishComposingText on inactive InputConnection 
12-11 13:34:00.499 1722-1729/mojavozacka.testovi_za_vozacka_dozvola W/art: Suspending all threads took: 8.897ms 
12-11 13:34:01.755 1722-1734/mojavozacka.testovi_za_vozacka_dozvola I/art: WaitForGcToComplete blocked for 5.076ms for cause Background 
12-11 13:34:05.741 1722-1778/mojavozacka.testovi_za_vozacka_dozvola E/EGL_emulation: tid 1778: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH) 
12-11 13:34:05.741 1722-1778/mojavozacka.testovi_za_vozacka_dozvola W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x7d21b2f6f040, error=EGL_BAD_MATCH 
12-11 13:34:08.083 1722-1722/mojavozacka.testovi_za_vozacka_dozvola W/IInputConnectionWrapper: finishComposingText on inactive InputConnection 

Répondre

0

Je ne suis pas sûr de ma réponse peut vous aider ou non mais vous pouvez essayer il, et dites-moi est-ce la même ou pas de spécialité dans la performance

yourContentView= (LinearLayout) findViewById(R.id.content_main1); 
yourContentView.removeAllViews(); 
+0

vous voulez dire mon LinearLayout principal qui a l'id de "layoutMain" non? –

+0

oui, la mise en page que vous voulez changer son contenu avec une autre question –

+0

bien la mise en page qui chante son contenu sur une question est sélectionnée est le RelativeLayot avec l'ID "fragment_container", je remplace sa mise en page avec un autre fragment lorsque je clique sur un bouton. Je vais essayer votre réponse et vous dire si cela fonctionne. –

0

J'ai trouvé une solution simple à cela. À 25 questions ouvertes, je recréerai la même activité. Il semble que le bug soit lié à l'activité, chaque activité peut avoir jusqu'à 30 fragments remplacés.