我試圖顯示wheight圖表,使用Achart引擎庫。但我有一個例外:line.addView ...Android:AchartEngine重量圖表layout.addView引發異常
有人可以告訴我我失蹤了什麼。因爲當我嘗試以新的意圖顯示圖表時,它的工作方式非常有限,但是當我嘗試在佈局中顯示它時崩潰。
這是我使用的代碼:
LinearLayout layout;
View mChartView ;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wifi);
CategorySeries category = new CategorySeries("Weight indic");
category.add("Current", 75);
category.add("Minimum", 65);
category.add("Maximum", 90);
DialRenderer renderer = new DialRenderer();
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setMargins(new int[] {20, 30, 15, 0});
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(Color.BLUE);
renderer.addSeriesRenderer(r);
r = new SimpleSeriesRenderer();
r.setColor(Color.rgb(0, 150, 0));
renderer.addSeriesRenderer(r);
r = new SimpleSeriesRenderer();
r.setColor(Color.GREEN);
renderer.addSeriesRenderer(r);
renderer.setLabelsTextSize(10);
renderer.setLabelsColor(Color.WHITE);
renderer.setShowLabels(true);
renderer.setVisualTypes(new DialRenderer.Type[] {Type.ARROW, Type.NEEDLE, Type.NEEDLE});
renderer.setMinValue(0);
renderer.setMaxValue(150);
layout = (LinearLayout) findViewById(R.id.chart);
if (mChartView != null) {
layout.removeView(mChartView);
}
mChartView = ChartFactory.getDialChartView(MyWifiNetwork.this, category, renderer);
layout.addView(mChartView, 0, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
}
而且這個logcat的:
05-23 11:25:03.332: W/dalvikvm(28280): threadid=1: thread exiting with uncaught exception (group=0x40d869a8)
05-23 11:25:03.365: E/AndroidRuntime(28280): FATAL EXCEPTION: main
05-23 11:25:03.365: E/AndroidRuntime(28280): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.debitdistance/com.example.debitdistance.MyWifiNetwork}: java.lang.NullPointerException
05-23 11:25:03.365: E/AndroidRuntime(28280): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343)
05-23 11:25:03.365: E/AndroidRuntime(28280): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
05-23 11:25:03.365: E/AndroidRuntime(28280): at android.app.ActivityThread.access$600(ActivityThread.java:162)
05-23 11:25:03.365: E/AndroidRuntime(28280): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
05-23 11:25:03.365: E/AndroidRuntime(28280): at android.os.Handler.dispatchMessage(Handler.java:107)
05-23 11:25:03.365: E/AndroidRuntime(28280): at android.os.Looper.loop(Looper.java:194)
05-23 11:25:03.365: E/AndroidRuntime(28280): at android.app.ActivityThread.main(ActivityThread.java:5371)
05-23 11:25:03.365: E/AndroidRuntime(28280): at java.lang.reflect.Method.invokeNative(Native Method)
05-23 11:25:03.365: E/AndroidRuntime(28280): at java.lang.reflect.Method.invoke(Method.java:525)
05-23 11:25:03.365: E/AndroidRuntime(28280): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
05-23 11:25:03.365: E/AndroidRuntime(28280): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
05-23 11:25:03.365: E/AndroidRuntime(28280): at dalvik.system.NativeStart.main(Native Method)
05-23 11:25:03.365: E/AndroidRuntime(28280): Caused by: java.lang.NullPointerException
05-23 11:25:03.365: E/AndroidRuntime(28280): at com.example.debitdistance.MyWifiNetwork.onCreate(MyWifiNetwork.java:227)
05-23 11:25:03.365: E/AndroidRuntime(28280): at android.app.Activity.performCreate(Activity.java:5122)
05-23 11:25:03.365: E/AndroidRuntime(28280): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
05-23 11:25:03.365: E/AndroidRuntime(28280): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
05-23 11:25:03.365: E/AndroidRuntime(28280): ... 11 more
此行在您的LogCat中引起:java.lang.NullPointerException說您正在使用未引用的對象。這行'在com.example.debitdistance.MyWifiNetwork.onCreate(MyWifiNetwork.java:227)'告訴你錯誤發生的位置 –
是的,正如我所說的,異常指向這行代碼:'layout.addView(mChartView, 0,新的LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));'。但我看不到源錯誤。 – Amina
好吧,我懷疑罪魁禍首是**這行**'mChartView = ChartFactory.getDialChartView(MyWifiNetwork.this,category,renderer);',而是。看起來你沒有在任何地方初始化mChartView **,然後給它賦值(聲明它爲'View mChartView;'仍然將它作爲** null **對象)。所以,你試圖將一個值分配給任何東西。 –