2013-07-16 51 views
2

我想在我的活動中顯示圓環圖。事實上,我的活動由一些片段組成。所以它不擴展Activity,但它擴展了FragmentActivity。 我正在使用achartengine的doughnutchartview將活動(不在其片段內)集成一個環形圖,方法是將其添加到線性佈局中。線性佈局已經在xml佈局文件中定義。這是我的代碼:將achartengine的doughnutchartview添加到線性佈局時發生IndexOutOfBoundsException

活動:

public class FoodConfessionsActivity extends FragmentActivity { 
    GraphicalView mChartView; 
    DefaultRenderer mRenderer; 
    MultipleCategorySeries mSeries; 
    ... 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     if (mChartView == null) { 
      LinearLayout chart1 = (LinearLayout) findViewById(R.id.chart1); 
      List<double[]> values = new ArrayList<double[]>(); 
      values.add(new double[] { 12, 14, 11, 10, 19 }); 
      values.add(new double[] { 10, 9, 14, 20, 11 }); 
      List<String[]> titles = new ArrayList<String[]>(); 
      titles.add(new String[] { "P1", "P2", "P3", "P4", "P5" }); 
      titles.add(new String[] { "Project1", "Project2", "Project3", "Project4", "Project5" }); 
      int[] colors = new int[] { Color.BLUE, Color.GREEN, Color.MAGENTA, Color.YELLOW, Color.CYAN }; 
      mSeries = new MultipleCategorySeries("ideal"); 
      int k = 0; 
      for (double[] value : values) { 
       mSeries.add(2007 + k + "", titles.get(k), value); 
       k++; 
      } 
      mRenderer = new DefaultRenderer(); 
      mRenderer.setApplyBackgroundColor(true); 
      mRenderer.setBackgroundColor(Color.rgb(222, 222, 200)); 
      mRenderer.setLabelsColor(Color.GRAY); 
      mRenderer.setStartAngle(180); 
      mRenderer.setDisplayValues(true); 
      mChartView = ChartFactory.getDoughnutChartView(getApplicationContext(), mSeries, mRenderer); 
      chart1.addView(mChartView); // Exception occurs at this line 

     } else { 
      mChartView.repaint(); 
     } 
    } 
} 

XML佈局:

<?xml version="1.0" encoding="utf-8"?> 
... 
<LinearLayout 
    android:id="@+id/chart1" 
    android:layout_weight="1" 
    android:orientation="horizontal" 
    android:layout_gravity="center" /> 
... 

我的問題是IndexOutOfBoundsException異常將在活動課達到該行後拋出(因爲我在指定上面的代碼):

chart1.addView(mChartView); 

並且該應用程序將被關閉。 我搜索了很多,無法弄清楚我的錯誤是什麼?任何人都可以幫忙嗎?

編輯:這是我的日誌貓:

07-16 09:38:26.854: E/AndroidRuntime(25648): FATAL EXCEPTION: main 
07-16 09:38:26.854: E/AndroidRuntime(25648): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 
07-16 09:38:26.854: E/AndroidRuntime(25648): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at java.util.ArrayList.get(ArrayList.java:304) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at org.achartengine.renderer.DefaultRenderer.getSeriesRendererAt(DefaultRenderer.java:189) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at org.achartengine.chart.DoughnutChart.draw(DoughnutChart.java:109) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at org.achartengine.GraphicalView.onDraw(GraphicalView.java:168) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.View.draw(View.java:10978) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.drawChild(ViewGroup.java:2887) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.drawChild(ViewGroup.java:2885) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.drawChild(ViewGroup.java:2885) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.drawChild(ViewGroup.java:2885) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.View.draw(View.java:10981) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.widget.FrameLayout.draw(FrameLayout.java:450) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.drawChild(ViewGroup.java:2887) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.View.draw(View.java:10981) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.drawChild(ViewGroup.java:2887) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.drawChild(ViewGroup.java:2885) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.drawChild(ViewGroup.java:2885) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.View.draw(View.java:10981) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.widget.FrameLayout.draw(FrameLayout.java:450) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2126) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewRootImpl.draw(ViewRootImpl.java:2026) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1634) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.os.Looper.loop(Looper.java:137) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at android.app.ActivityThread.main(ActivityThread.java:4424) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at java.lang.reflect.Method.invokeNative(Native Method) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at java.lang.reflect.Method.invoke(Method.java:511) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
07-16 09:38:26.854: E/AndroidRuntime(25648): at dalvik.system.NativeStart.main(Native Method) 

很多感謝名單提前。

+0

你需要發佈完整的logcat – Broak

回答

2

您有MultipleCategorySeries,但是您沒有任何SimpleSeriesRenderer已添加到mRenderer。一個例子見this

+0

非常感謝你。多麼糟糕的錯誤。它現在有效。 –

+0

不客氣。 –

相關問題