Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid need help with diagram
    primarykey
    data
    text
    <p>i've been doing this code about making a diagram in android, but the error keep coming, am i missing something?</p> <pre><code>package android.research.chart; import java.io.File; import java.io.FileOutputStream; import org.achartengine.ChartFactory; import org.achartengine.GraphicalView; import org.achartengine.chart.PointStyle; import org.achartengine.chartdemo.demo.R; import org.achartengine.model.SeriesSelection; import org.achartengine.model.XYMultipleSeriesDataset; import org.achartengine.model.XYSeries; import org.achartengine.renderer.XYMultipleSeriesRenderer; import org.achartengine.renderer.XYSeriesRenderer; import org.achartengine.tools.PanListener; import org.achartengine.tools.ZoomEvent; import org.achartengine.tools.ZoomListener; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; import android.graphics.Color; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Toast; public class XYChart extends Activity { public static final String TYPE = "type"; private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset(); private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); private XYSeries mCurrentSeries; private XYSeriesRenderer mCurrentRenderer; private String mDateFormat; private GraphicalView mChartView; private int index = 0; @Override protected void onRestoreInstanceState(Bundle savedState) { super.onRestoreInstanceState(savedState); mDataset = (XYMultipleSeriesDataset) savedState.getSerializable("dataset"); mRenderer = (XYMultipleSeriesRenderer) savedState.getSerializable("renderer"); mCurrentSeries = (XYSeries) savedState.getSerializable("current_series"); mCurrentRenderer = (XYSeriesRenderer) savedState.getSerializable("current_renderer"); mDateFormat = savedState.getString("date_format"); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putSerializable("dataset", mDataset); outState.putSerializable("renderer", mRenderer); outState.putSerializable("current_series", mCurrentSeries); outState.putSerializable("current_renderer", mCurrentRenderer); outState.putString("date_format", mDateFormat); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.xy_chart); mX = (EditText) findViewById(R.id.xValue); mY = (EditText) findViewById(R.id.yValue); mRenderer.setApplyBackgroundColor(true); mRenderer.setBackgroundColor(Color.argb(100, 50, 50, 50)); mRenderer.setAxisTitleTextSize(16); mRenderer.setChartTitleTextSize(20); mRenderer.setLabelsTextSize(15); mRenderer.setLegendTextSize(15); mRenderer.setMargins(new int[] { 20, 30, 15, 0 }); mRenderer.setZoomButtonsVisible(true); mRenderer.setPointSize(10); XYSeries series = new XYSeries("Kenaikan Gula Darah"); mDataset.addSeries(series); mCurrentSeries = series; XYSeriesRenderer renderer = new XYSeriesRenderer(); mRenderer.addSeriesRenderer(renderer); renderer.setPointStyle(PointStyle.CIRCLE); renderer.setFillPoints(true); mCurrentRenderer = renderer; setSeriesEnabled(true); double x = 0; double y = 0; try { x = 1; } catch (NumberFormatException e) { // TODO return; } try { y = 50; } catch (NumberFormatException e) { // TODO return; } mCurrentSeries.add(x, y); if (mChartView != null) { mChartView.repaint(); } Bitmap bitmap = mChartView.toBitmap(); try { File file = new File(Environment.getExternalStorageDirectory(), "test" + index++ + ".png"); FileOutputStream output = new FileOutputStream(file); bitmap.compress(CompressFormat.PNG, 100, output); } catch (Exception e) { e.printStackTrace(); } } @Override protected void onResume() { super.onResume(); if (mChartView == null) { LinearLayout layout = (LinearLayout) findViewById(R.id.chart); mChartView = ChartFactory.getLineChartView(this, mDataset, mRenderer); mRenderer.setClickEnabled(true); mRenderer.setSelectableBuffer(100); mChartView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint(); double[] xy = mChartView.toRealPoint(0); if (seriesSelection == null) { Toast.makeText(XYChartBuilder.this, "No chart element was clicked", Toast.LENGTH_SHORT) .show(); } else { Toast.makeText( XYChartBuilder.this, "Chart element in series index " + seriesSelection.getSeriesIndex() + " data point index " + seriesSelection.getPointIndex() + " was clicked" + " closest point value X=" + seriesSelection.getXValue() + ", Y=" + seriesSelection.getValue() + " clicked point value X=" + (float) xy[0] + ", Y=" + (float) xy[1], Toast.LENGTH_SHORT).show(); } } }); mChartView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint(); if (seriesSelection == null) { Toast.makeText(XYChartBuilder.this, "No chart element was long pressed", Toast.LENGTH_SHORT); return false; // no chart element was long pressed, so let something // else handle the event } else { Toast.makeText(XYChartBuilder.this, "Chart element in series index " + seriesSelection.getSeriesIndex() + " data point index " + seriesSelection.getPointIndex() + " was long pressed", Toast.LENGTH_SHORT); return true; // the element was long pressed - the event has been // handled } } }); mChartView.addZoomListener(new ZoomListener() { public void zoomApplied(ZoomEvent e) { String type = "out"; if (e.isZoomIn()) { type = "in"; } System.out.println("Zoom " + type + " rate " + e.getZoomRate()); } public void zoomReset() { System.out.println("Reset"); } }, true, true); mChartView.addPanListener(new PanListener() { public void panApplied() { System.out.println("New X range=[" + mRenderer.getXAxisMin() + ", " + mRenderer.getXAxisMax() + "], Y range=[" + mRenderer.getYAxisMax() + ", " + mRenderer.getYAxisMax() + "]"); } }); layout.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); boolean enabled = mDataset.getSeriesCount() &gt; 0; setSeriesEnabled(enabled); } else { mChartView.repaint(); } } private void setSeriesEnabled(boolean enabled) { mX.setEnabled(enabled); mY.setEnabled(enabled); mAdd.setEnabled(enabled); } } </code></pre> <p>i wanted to put a value to x and y manually, and i guess i need an array for it cause i get that value from my database sqlite which has many x and y value inside.</p> <p>anyone can help me to solved this problem? thanks before</p> <p>edit : i've got error in :</p> <pre><code> double x = 0; double y = 0; try { x = 1; } catch (NumberFormatException e) { // TODO return; } try { y = 50; } catch (NumberFormatException e) { // TODO return; } mCurrentSeries.add(x, y); if (mChartView != null) { mChartView.repaint(); } Bitmap bitmap = mChartView.toBitmap(); try { File file = new File(Environment.getExternalStorageDirectory(), "test" + index++ + ".png"); FileOutputStream output = new FileOutputStream(file); bitmap.compress(CompressFormat.PNG, 100, output); } catch (Exception e) { e.printStackTrace(); } </code></pre> <p>but when i put x and y value by editText, it work, i don't know why, here's the code with editText :</p> <pre><code>mAdd.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { double x = 0; double y = 0; try { x = Double.parseDouble(mX.getText().toString()); } catch (NumberFormatException e) { // TODO mX.requestFocus(); return; } try { y = Double.parseDouble(mY.getText().toString()); } catch (NumberFormatException e) { // TODO mY.requestFocus(); return; } mCurrentSeries.add(x, y); mX.setText(""); mY.setText(""); mX.requestFocus(); if (mChartView != null) { mChartView.repaint(); } Bitmap bitmap = mChartView.toBitmap(); try { File file = new File(Environment.getExternalStorageDirectory(), "test" + index++ + ".png"); FileOutputStream output = new FileOutputStream(file); bitmap.compress(CompressFormat.PNG, 100, output); } catch (Exception e) { e.printStackTrace(); } } }); </code></pre> <p>the problem is i don't wanna put x and y value with editText, but i want to put x and y value from database sqlite. anyone can help me? thanks before</p> <p>log : </p> <pre><code>08-25 16:42:33.975: WARN/dalvikvm(8681): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): FATAL EXCEPTION: main 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.achartengine.chartdemo.demo/org.achartengine.chartdemo.demo.XYChartBuilder}: java.lang.NullPointerException 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at android.os.Handler.dispatchMessage(Handler.java:99) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at android.os.Looper.loop(Looper.java:123) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at android.app.ActivityThread.main(ActivityThread.java:4627) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at java.lang.reflect.Method.invokeNative(Native Method) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at java.lang.reflect.Method.invoke(Method.java:521) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at dalvik.system.NativeStart.main(Native Method) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): Caused by: java.lang.NullPointerException 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at org.achartengine.chartdemo.demo.XYChartBuilder.onCreate(XYChartBuilder.java:137) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 08-25 16:42:33.994: ERROR/AndroidRuntime(8681): ... 11 more </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload