Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to show two graphs in same layout using achartengine library in android
    text
    copied!<p>I am facing a problem regarding displaying graph using achartengine library. I have two menu button let say <strong>A</strong> and <strong>B</strong> buttons. Now when you click on <strong>A</strong> menu button line chart is shown and when you click on <strong>B</strong> menu button pie chart is shown. The problem which I am facing is when I am click back again <strong>A</strong> menu button to display line it not showing any graph and the same case is happening with <strong>B</strong> menu button. </p> <p>This my main activity class:</p> <pre><code>import org.achartengine.ChartFactory; import org.achartengine.GraphicalView; import org.achartengine.chart.PointStyle; import org.achartengine.model.CategorySeries; import org.achartengine.model.SeriesSelection; import org.achartengine.model.TimeSeries; import org.achartengine.model.XYMultipleSeriesDataset; import org.achartengine.renderer.DefaultRenderer; import org.achartengine.renderer.SimpleSeriesRenderer; import org.achartengine.renderer.XYMultipleSeriesRenderer; import org.achartengine.renderer.XYSeriesRenderer; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; import com.capricorn.RayMenu; public class MainActivity extends Activity { private static final int[] ITEM_DRAWABLES = { R.drawable.ic_1, R.drawable.ic_2, R.drawable.ic_3, R.drawable.ic_4, R.drawable.ic_5, R.drawable.ic_6 }; private GraphicalView mChartView; private GraphicalView pieChartView; private CategorySeries pieSeries = new CategorySeries("Pie Chart"); private DefaultRenderer pieRenderer = new DefaultRenderer(); private TimeSeries series = new TimeSeries("Line1"); private XYMultipleSeriesDataset dataSet = new XYMultipleSeriesDataset(); private XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer(); private XYSeriesRenderer renderer = new XYSeriesRenderer(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final int itemCount = ITEM_DRAWABLES.length; RayMenu rayMenu = (RayMenu) findViewById(R.id.ray_menu); for (int i = 0; i &lt; itemCount; i++) { ImageView item = new ImageView(this); item.setImageResource(ITEM_DRAWABLES[i]); final int position = i; rayMenu.addItem(item, new OnClickListener() { @Override public void onClick(View v) { action(position); } });// Add a menu item } } public void lineGraph() { int[] X = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int[] Y = { 30, 34, 45, 57, 77, 89, 100, 111, 123, 145 }; for (int i = 0; i &lt; X.length; i++) { series.add(X[i], Y[i]); } dataSet.addSeries(series); renderer.setColor(Color.RED); renderer.setPointStyle(PointStyle.CIRCLE); renderer.setFillPoints(true); multiRenderer.setApplyBackgroundColor(true); multiRenderer.setBackgroundColor(Color.WHITE); multiRenderer.setMarginsColor(Color.WHITE); multiRenderer.setAxesColor(Color.BLACK); multiRenderer.setLabelsTextSize(20); multiRenderer.setXLabelsColor(Color.BLACK); multiRenderer.setYLabelsColor(0, Color.BLACK); multiRenderer.addSeriesRenderer(renderer); } public void pieGraph() { int[] values = { 25, 15, 20, 40 }; int k =0; for(int value : values){ pieSeries.add("Section" + ++k, value); } int[] COLORS = new int[] { Color.GREEN, Color.BLUE, Color.MAGENTA, Color.CYAN }; for(int colors : COLORS){ SimpleSeriesRenderer simple = new SimpleSeriesRenderer(); simple.setColor(colors); pieRenderer.addSeriesRenderer(simple); } } public void action(int id) { LinearLayout layout = (LinearLayout) findViewById(R.id.chart); if (id == 0) { layout.removeView(pieChartView); lineGraph(); if (mChartView == null) { mChartView = ChartFactory.getLineChartView(this, dataSet, multiRenderer); multiRenderer.setClickEnabled(true); multiRenderer.setSelectableBuffer(10); mChartView.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { SeriesSelection seriesSelection = mChartView .getCurrentSeriesAndPoint(); if (seriesSelection == null) { Toast.makeText(MainActivity.this, "No chart element", Toast.LENGTH_SHORT) .show(); } else { Toast.makeText( MainActivity.this, "Chart element in series index " + seriesSelection.getSeriesIndex() + " data point index " + seriesSelection.getPointIndex() + " was clicked" + " closest point value X=" + seriesSelection.getXValue() + ", Y=" + seriesSelection.getValue(), Toast.LENGTH_SHORT).show(); } } }); layout.addView(mChartView, new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); } else { mChartView.repaint(); } } else if (id == 1) { layout.removeView(mChartView); pieGraph(); if (pieChartView == null) { pieChartView = ChartFactory.getPieChartView(this, pieSeries, pieRenderer); pieRenderer.setClickEnabled(true); pieChartView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SeriesSelection seriesSelection = pieChartView .getCurrentSeriesAndPoint(); if (seriesSelection == null) { Toast.makeText(MainActivity.this, "No chart element selected", Toast.LENGTH_SHORT).show(); } else { for (int i = 0; i &lt; pieSeries.getItemCount(); i++) { pieRenderer.getSeriesRendererAt(i) .setHighlighted( i == seriesSelection .getPointIndex()); } Toast.makeText( MainActivity.this, "Chart data point index " + seriesSelection.getPointIndex() + " selected" + " point value=" + seriesSelection.getValue(), Toast.LENGTH_SHORT).show(); } } }); layout.addView(pieChartView, new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); } else { pieChartView.repaint(); } } else if (id == 2) { } else if (id == 3) { } else if (id == 4) { } else if (id == 5) { } } } </code></pre> <p>As you can see from the above code I am using layout.removeView to remove GraphicalView from the layout then I am able to view one time when you click on the button for the first time but not visible when you click on the button for the second time.Please help me I am facing this problem from last 2 days. </p>
 

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