¿Cómo usar el gráfico dentro del fragmento en Android usando la biblioteca Achartengine?
Tengo una actividad de 3ChartPerTabActivity en la que tengo un fragmento de 3 pestañas con Viepager. Cada vista de fragmento tiene un color diferente. Hasta ahora está funcionando.
Mi problema se produce cuando intento agregar un PieChart al diseño del fragmento de la primera pestaña ... Quiero hacer un gráfico por pestaña. Por ejemplo, la primera pestaña es un gráfico circular e.t.c.
Decidí usarAchartengine
biblioteca.Lo intenté pero me sale"NullPointerException"
.
Aquí está el tab_frag1_layout.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/chart_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</LinearLayout>
</LinearLayout>
Aquí está el Tab1Fragment:
import java.text.DecimalFormat;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.model.CategorySeries;
import org.achartengine.model.SeriesSelection;
import org.achartengine.renderer.DefaultRenderer;
import org.achartengine.renderer.SimpleSeriesRenderer;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.Toast;
public class Tab1Fragment extends Fragment {
private GraphicalView mChartView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (container == null) {
return null;
}
// Pie Chart Slice Names
final String[] status = new String[] { "Normal", "High", "Over" };
// Pie Chart Slice Values
double[] distribution = { 6, 3, 1 };
// Color of each Pie Chart Slices
int[] colors = { Color.GREEN, Color.YELLOW, Color.RED };
// Instantiating CategorySeries to plot Pie Chart
CategorySeries distributionSeries = new CategorySeries(" General ");
for (int i = 0; i < distribution.length; i++) {
// Adding a slice with its values and name to the Pie Chart
distributionSeries.add(status[i], distribution[i]);
}
// Instantiating a renderer for the Pie Chart
DefaultRenderer defaultRenderer = new DefaultRenderer();
for (int i = 0; i < distribution.length; i++) {
SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();
seriesRenderer.setColor(colors[i]);
seriesRenderer.setDisplayChartValues(true);
// Adding the renderer of a slice to the renderer of the pie chart
defaultRenderer.addSeriesRenderer(seriesRenderer);
}
defaultRenderer.setChartTitle("General");
defaultRenderer.setChartTitleTextSize(20);
defaultRenderer.setZoomButtonsVisible(true);
//////////////////////////// Aquí tengo una excepción de puntero nulo ///////////////// ////
// Getting a reference to view group linear layout chart_container
LinearLayout chartContainer = (LinearLayout) getView().findViewById(
R.id.chart_container);
////////////////////////////////////////////////// ////////////////////////////////////
// Getting PieChartView to add to the custom layout
mChartView = ChartFactory.getPieChartView(getActivity(),
distributionSeries, defaultRenderer);
// Adding the pie chart to the custom layout
chartContainer.addView(mChartView);
return (LinearLayout) inflater.inflate(R.layout.tab_frag1_layout,
container, false);
}
}
Aquí hay una captura de pantalla: