2012-07-13 139 views
0

我正在使用Android兼容性包來使用Loaders。當我初始化一個加載程序或在onCreate方法重新啓動它,它只是找到了,但當我重新啓動或初始化它在onStart它會拋出一個錯誤,我想知道爲什麼「有些時候」當我initLoader在活動的onCreate並在加載器將數據綁定到UI之前單擊某個按鈕將其快速移動到另一個活動,然後返回到之前啓動Loader的活動,加載器不會加載數據「UI上沒有任何內容?!!!! so我認爲移動initLoader到onStart但它拋出一個錯誤onStart方法中的restartLoader拋出異常

07-13 03:19:15.140: E/AndroidRuntime(23179): java.lang.RuntimeException: Unable to resume activity {biz.dot.khtmeh/biz.dot.khtmeh.ui.HomeScreen}: java.lang.IllegalStateException: There is already a listener registered 
07-13 03:19:15.140: E/AndroidRuntime(23179): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1173) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at android.os.Looper.loop(Looper.java:137) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at android.app.ActivityThread.main(ActivityThread.java:4424) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at java.lang.reflect.Method.invokeNative(Native Method) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at java.lang.reflect.Method.invoke(Method.java:511) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at dalvik.system.NativeStart.main(Native Method) 
07-13 03:19:15.140: E/AndroidRuntime(23179): Caused by: java.lang.IllegalStateException: There is already a listener registered 
07-13 03:19:15.140: E/AndroidRuntime(23179): at android.support.v4.content.Loader.registerListener(Loader.java:130) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at android.support.v4.app.LoaderManagerImpl$LoaderInfo.start(LoaderManager.java:259) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at android.support.v4.app.LoaderManagerImpl.installLoader(LoaderManager.java:509) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at android.support.v4.app.LoaderManagerImpl.createAndInstallLoader(LoaderManager.java:496) 
07-13 03:19:15.140: E/AndroidRuntime(23179): at android.support.v4.app.LoaderManagerImpl.restartLoader(LoaderManager.java:642) 
+1

您的logcat明確指出您的問題:「由於:java.lang.IllegalStateException:已經有一個已註冊的監聽器」您正試圖註冊某種已經在android.support註冊過的監聽器(IE。 .v4.content.Loader.registerListener(Loader.java:130)「)。您應該嘗試檢查,以確定聽衆是否已經註冊。 – Guardanis 2012-07-13 01:07:21

回答

4

很可能你重新使用裝載機不止一次。每次onCreateLoader(..)被調用時,你應該返回一個的新實例。

+0

好點。當我從onCreateLoader()返回靜態類實例時,我遇到了加載程序重新啓動的問題, – 2013-05-17 14:49:29