【发布时间】:2016-12-11 11:33:14
【问题描述】:
我有一个测试应用程序,它的问题存储在数据库中。我的 FragmentActivity 包含一个片段,当从 AppBar 中选择新问题时,该片段将被替换。当我选择一个新问题大约 30 次时,FragmentActivity 意外关闭并将我带到我之前返回堆栈中的 Activity。
在 Verbose 级别的 Logcat 上,我没有看到任何与我的应用程序相关的内容。
我的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>
RelativeLayout 在调用 fragmentTransaction.replace() 时总是被片段替换; 在下面的 LinearLayout 中是我的 AppBar,它以编程方式创建了代表数据库中每个问题的按钮。
当一个按钮被点击时 OnClickListener 被调用并识别哪个按钮被点击然后在一个新的方法中调用 fragmentTransaction.replace(); 这是该方法的代码:
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();
}
我不知道是 Sqlite 数据库导致它还是 FragmentManager 导致我在 Verbose 中没有与我的 Appliaction 相关的任何信息。
编辑: 添加了 Logcat,这里是所有 logcat,因为我在 Emulator 上单击运行直到它关闭 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
【问题讨论】:
标签: android sqlite android-fragments android-fragmentactivity