I am using AChartEngine to make charts which seems to be working quite well so far. The only thing to make this perfect would be to be able to put this chart on a popup. Unfortunately I have no idea how to do this. Whenever I try to include the chart's function to be called with the popup I get a NullPointerException. Here is the code for my popup window (which is called whenever I click on a button)
void popupWindow(){
LayoutInflater layoutInflater
= (LayoutInflater)getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.activity_report_popup_layout, null);
final PopupWindow popupWindow = new PopupWindow(
popupView,
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
Button btnDismiss = (Button)popupView.findViewById(R.id.dismiss);
btnDismiss.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
popupWindow.dismiss();
}});
popupWindow.showAsDropDown(plotsButton, 50, -30);
}
Here is the relevant popup layout xml code:
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Popup"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textView2"
android:layout_marginTop="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a simple popup" />
<Button
android:id="@+id/dismiss"
android:layout_marginTop="10dp"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Close" />
<LinearLayout
android:orientation="horizontal"
android:id="@+id/chart_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_title" >
</LinearLayout>
Edit: Decided to also add the chart code:
private void openChart(){
Date[] dt = new Date[dates.size()];
float[] visits = new float[dates.size()];
for(int i=0;i<dates.size();i++){
try {
dt[i]= new SimpleDateFormat("yyyy-MM-dd").parse(dates.get(i));
visits[i] = Float.parseFloat(distance.get(i));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
TimeSeries visitsSeries = new TimeSeries("Visits");
for(int i=0;i<dt.length;i++){
visitsSeries.add(dt[i], visits[i]);
}
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
dataset.addSeries(visitsSeries);
XYSeriesRenderer visitsRenderer = new XYSeriesRenderer();
visitsRenderer.setColor(Color.BLACK);
visitsRenderer.setPointStyle(PointStyle.CIRCLE);
visitsRenderer.setFillPoints(true);
visitsRenderer.setLineWidth(2);
visitsRenderer.setDisplayChartValues(true);
XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
multiRenderer.addSeriesRenderer(visitsRenderer);
LinearLayout chartContainer = (LinearLayout) findViewById(R.id.chart_container);
mChart = (GraphicalView) ChartFactory.getTimeChartView(getBaseContext(), dataset, multiRenderer,"dd-MMM-yyyy");
multiRenderer.setClickEnabled(true);
multiRenderer.setSelectableBuffer(10);
chartContainer.addView(mChart);
}
Edit 2: Added the error logs:
05-16 10:45:39.013: E/AndroidRuntime(6311): FATAL EXCEPTION: main
05-16 10:45:39.013: E/AndroidRuntime(6311): Process: com.example.jfitnessfunctiontester, PID: 6311
05-16 10:45:39.013: E/AndroidRuntime(6311): java.lang.NullPointerException
05-16 10:45:39.013: E/AndroidRuntime(6311): at activities.ReportListViewActivity.openChart(ReportListViewActivity.java:256)
05-16 10:45:39.013: E/AndroidRuntime(6311): at activities.ReportListViewActivity.popupWindow(ReportListViewActivity.java:115)
05-16 10:45:39.013: E/AndroidRuntime(6311): at activities.ReportListViewActivity$2.onClick(ReportListViewActivity.java:137)
05-16 10:45:39.013: E/AndroidRuntime(6311): at android.view.View.performClick(View.java:4438)
05-16 10:45:39.013: E/AndroidRuntime(6311): at android.view.View$PerformClick.run(View.java:18422)
05-16 10:45:39.013: E/AndroidRuntime(6311): at android.os.Handler.handleCallback(Handler.java:733)
05-16 10:45:39.013: E/AndroidRuntime(6311): at android.os.Handler.dispatchMessage(Handler.java:95)
05-16 10:45:39.013: E/AndroidRuntime(6311): at android.os.Looper.loop(Looper.java:136)
05-16 10:45:39.013: E/AndroidRuntime(6311): at android.app.ActivityThread.main(ActivityThread.java:5017)
05-16 10:45:39.013: E/AndroidRuntime(6311): at java.lang.reflect.Method.invokeNative(Native Method)
05-16 10:45:39.013: E/AndroidRuntime(6311): at java.lang.reflect.Method.invoke(Method.java:515)
05-16 10:45:39.013: E/AndroidRuntime(6311): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-16 10:45:39.013: E/AndroidRuntime(6311): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-16 10:45:39.013: E/AndroidRuntime(6311): at dalvik.system.NativeStart.main(Native Method)