마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

그래프를 그릴려고 achartengine 라이브어리 사용 중

0 추천
package android.graph;

import org.achartengine.ChartFactory;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.TimeSeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;

public class LineGraph{

public Intent getIntent(Context context) {
  
  // Our first data
  int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // x values!
  int[] y =  { 30, 34, 45, 57, 77, 89, 100, 111 ,123 ,145 }; // y values!
  TimeSeries series = new TimeSeries("Line1");
  for( int i = 0; i < x.length; i++)
  {
   series.add(x[i], y[i]);
  }
  
  // Our second data
  int[] x2 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // x values!
  int[] y2 =  { 145, 123, 111, 100, 89, 77, 57, 45, 34, 30}; // y values!
  TimeSeries series2 = new TimeSeries("Line2");
  for( int i = 0; i < x2.length; i++)
  {
   series2.add(x2[i], y2[i]);
  }
  
  XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
  dataset.addSeries(series);
  dataset.addSeries(series2);
  
  XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); // Holds a collection of XYSeriesRenderer and customizes the graph
  XYSeriesRenderer renderer = new XYSeriesRenderer(); // This will be used to customize line 1
  XYSeriesRenderer renderer2 = new XYSeriesRenderer(); // This will be used to customize line 2
  mRenderer.addSeriesRenderer(renderer);
  mRenderer.addSeriesRenderer(renderer2);
  
  // Customization time for line 1!
  renderer.setColor(Color.WHITE);
  renderer.setPointStyle(PointStyle.SQUARE);
  renderer.setFillPoints(true);
  // Customization time for line 2!
  renderer2.setColor(Color.YELLOW);
  renderer2.setPointStyle(PointStyle.DIAMOND);
  renderer2.setFillPoints(true);
  
  Intent intent = ChartFactory.getLineChartIntent(context, dataset, mRenderer, "Line Graph Title");
  return intent;
  
 }
}

 

 

07-24 08:02:42.838: E/AndroidRuntime(1865): FATAL EXCEPTION: main
07-24 08:02:42.838: E/AndroidRuntime(1865): java.lang.IllegalStateException: Could not execute method of the activity
07-24 08:02:42.838: E/AndroidRuntime(1865):  at android.view.View$1.onClick(View.java:3599)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at android.view.View.performClick(View.java:4204)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at android.view.View$PerformClick.run(View.java:17355)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at android.os.Handler.handleCallback(Handler.java:725)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at android.os.Handler.dispatchMessage(Handler.java:92)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at android.os.Looper.loop(Looper.java:137)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at android.app.ActivityThread.main(ActivityThread.java:5041)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at java.lang.reflect.Method.invokeNative(Native Method)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at java.lang.reflect.Method.invoke(Method.java:511)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at dalvik.system.NativeStart.main(Native Method)
07-24 08:02:42.838: E/AndroidRuntime(1865): Caused by: java.lang.reflect.InvocationTargetException
07-24 08:02:42.838: E/AndroidRuntime(1865):  at java.lang.reflect.Method.invokeNative(Native Method)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at java.lang.reflect.Method.invoke(Method.java:511)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at android.view.View$1.onClick(View.java:3594)
07-24 08:02:42.838: E/AndroidRuntime(1865):  ... 11 more
07-24 08:02:42.838: E/AndroidRuntime(1865): Caused by: java.lang.NoClassDefFoundError: org.achartengine.model.TimeSeries
07-24 08:02:42.838: E/AndroidRuntime(1865):  at android.graph.LineGraph.getIntent(LineGraph.java:20)
07-24 08:02:42.838: E/AndroidRuntime(1865):  at android.graph.GraphAChartEngineActivity.lineGraphHandler(GraphAChartEngineActivity.java:20)
07-24 08:02:42.838: E/AndroidRuntime(1865):  ... 14 more

 

 

왜 실행시키는데 죽는지 모르겠습니다.ㅠ

혹시 아시는 분 계세요?

 

소스상 에러는 없는데요.

에뮬 또는 실폰으로 돌리면 에러가 나면서 앱이 다운됩니다.ㅠ

http://www.mediafire.com/download/ce4b82a4w8q2rd0/GraphAChartEngine+R149.zip

소스는 위에서 받은거에요.

 

 

앤드류이드 (6,190 포인트) 님이 2013년 7월 24일 질문
앤드류이드님이 2013년 7월 24일 수정

3개의 답변

0 추천
 
채택된 답변
로그는 LineGraph.java 20라인의 TimeSeries 클래스를 찾지 못 해서 나는 로그로 보입니다.

동작은 잘 되는 소스로 보이는데.

libs/achartengine-0.7.0.jar 에 라이브러리가 있다면 실행이 되어야 하는데.

이클립스에서 무슨 이유에서인지는 몰라도,

achartengine-0.7.0.jar 의 내용을 컴파일 하지 않는 듯 합니다.

bin/classes/org/achartengine/model/TimeSeries.class가 있는지 확인 해보세요.(이클립스에서는 안보이니 직접 가서 보셔야 합니다.)

없다면 이클립스가 맞간 상태일 겁니다.

클린 빌드해보시고, 그래도 안되면 이클립스의 워크스페이스를 변경하여,  

테스트 소스를 다시 로드 하셔 테스트 해보세요
사악미소 (65,330 포인트) 님이 2013년 7월 24일 답변
앤드류이드님이 2013년 7월 24일 채택됨
0 추천
받아서 실행 해보는데 잘 됩니다.

4가지 그래프 모두 잘 나옵니다.
aucd29 (218,390 포인트) 님이 2013년 7월 24일 답변
저두 한번에 됐으면 좋겠어요 ㅠㅠ 암튼 테스트 감사드립니다.
0 추천

NoClassDefFoundError

 

이 에러는 프로젝트가 잘못 빌드 되었거나 해당 프로젝트 import 가 잘못 되었을 때 발생합니다.

 

Build Clean 해보시고요. 그래도 문제라면 import 문제이니 프로젝트 Properties 의 Android 설정이나 Java Build Path 설정부분에 문제가 있는 것입니다.

NoBrain (1,590 포인트) 님이 2013년 7월 24일 답변
아 지금 해골이 너무 아파서 테스트를 못하겠네요;; 내일 시도해봐야 할듯 싶습니다. 답변 감사드립니다.
...