2013-04-21 27 views
0

我從這裏下載achartengine演示:http://code.google.com/p/achartengine/downloads/list 和我開始演示後,我發現不是每個圖表都按預期繪製,當我點擊預算餅圖時,它沒有工作,在這裏打破了 是我的日誌:achartengine演示的預算表沒有按預期工作

06-11 17:48:31.478: D/AndroidRuntime(1909): Shutting down VM 
06-11 17:48:31.478: W/dalvikvm(1909): threadid=1: thread exiting with uncaught exception (group=0x40a221f8) 
06-11 17:48:31.518: E/AndroidRuntime(1909): FATAL EXCEPTION: main 
06-11 17:48:31.518: E/AndroidRuntime(1909): java.lang.NullPointerException 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.GLES20Canvas.drawBitmap(GLES20Canvas.java:692) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.GLES20RecordingCanvas.drawBitmap(GLES20RecordingCanvas.java:103) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at org.achartengine.GraphicalView.onDraw(GraphicalView.java:174) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.View.draw(View.java:10982) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.View.getDisplayList(View.java:10421) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.ViewGroup.drawChild(ViewGroup.java:2850) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.View.draw(View.java:10985) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.widget.FrameLayout.draw(FrameLayout.java:450) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.View.getDisplayList(View.java:10421) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.ViewGroup.drawChild(ViewGroup.java:2850) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.View.getDisplayList(View.java:10419) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.ViewGroup.drawChild(ViewGroup.java:2850) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.View.draw(View.java:10985) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.widget.FrameLayout.draw(FrameLayout.java:450) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2126) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.View.getDisplayList(View.java:10421) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:840) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.ViewRootImpl.draw(ViewRootImpl.java:1935) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1659) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2467) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.os.Looper.loop(Looper.java:137) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at java.lang.reflect.Method.invoke(Method.java:511) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-11 17:48:31.518: E/AndroidRuntime(1909):  at dalvik.system.NativeStart.main(Native Method) 

我不能趕上在代碼中的異常詳細信息,也許是因爲異常沒有在主thread.does發生的人有相同的經歷嗎? 任何相關的答案是歡迎,提前謝謝!

+1

我建議你在這裏下載一個較新的版本,看看你是否仍然有這個例外:http://achartengine.org/download/ – 2013-04-21 17:50:24

回答

1

這可能與AChartEngine本身的演示應用程序本身沒有直接關係。不過,我發現在使用ProGuard的發佈模式下構建應用程序(使用AChartEngine庫)時。正如ProGuard的android文檔中所述,有些情況很難分析並錯誤地刪除它認爲未使用的代碼。在這種情況下,當庫試圖通過調用onDraw繪製圖形時,它會拋出一個NPE。

爲了克服這個問題,我發現你必須自定義ProGuard配置,指示它通過向proguard.cfg添加以下行來單獨離開AChartEngine類。

-keep class javax.** { *; } 

希望這可以幫助別人。