try catch문이라 어디서발생하는지도 잘 모르겠어요.. 도와주실수 있나요.. 저의 xml파일은
<?xml version = "1.0" encoding = "utf-8" ?>
<node>
<checkio>수입</checkio>
<money>1000</money>
<checkio>지출</checkio>
<money>-2000</money>
</node>
'이렇게 생겼는데
checkio.size()하면 2가 나오더라고요 근데
for(i=0;checkio.size();i++){
system.out.println(checkio.get(i));
}
이렇게 하면 나오는데 이 checkio.get(i)를 다른곳에다 가 넣을라고 하면 첫번째 값은 불러와 지는데 두번째 값에서 NullPointerException이 나와요..
좀 도와주시겠어요?
몇시간동안했는데도 잘 모르겠어요..
package com.account.real;
import java.io.InputStream;
import java.net.URL;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.model.CategorySeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.widget.LinearLayout;
public class ChartActivity extends Activity {
private final String SERVER_ADDRESS = "http://--";
String Email = com.account.real.LoginActivity.userEmail;
Date date;
long now;
String a;
SimpleDateFormat format;
LinearLayout ll ;
//차트 그리기 위한
List<double[]> values;
List<String> title = new ArrayList<String>();
ArrayList<String> checkio ;
XYMultipleSeriesRenderer renderer;//그래픽 속성 지정객체
XYMultipleSeriesDataset dataset ; //설정
Context context = ChartActivity.this;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chart);
ll = (LinearLayout)findViewById(R.id.llBody);
now = System.currentTimeMillis();
date=new Date(now);
format = new SimpleDateFormat("yyyy/MM/dd");
a = format.format(date);
final Handler handler = new Handler();
handler.post(new Runnable() {
public void run() {
try{
URL url = new URL(SERVER_ADDRESS + "/chart2.php?"
+ "Email=" + URLEncoder.encode(Email, "UTF-8")
+ "&Day=" + URLEncoder.encode(a, "UTF-8"));
System.out.println(url);
url.openStream();
checkio = getXmlDataList("chart2result.xml", "checkio");
ArrayList<String> money = getXmlDataList("chart2result.xml", "money");
renderer = new XYMultipleSeriesRenderer();
for (int k = 0; k < checkio.size(); k++) {
if(money.get(k).contains("-"))
{
String m = money.get(k).substring(1);
System.out.println(Double.parseDouble(m));
values.add(new double[]{ Double.valueOf(m) });
}else
{
String m = money.get(k);
System.out.println(Double.parseDouble(m));
values.add(new double[]{ Double.valueOf(money.get(k)) });
}
}
renderer.setXTitle("분류");
renderer.setYTitle("원");
renderer.setAxesColor(Color.WHITE);
renderer.setLabelsColor(Color.CYAN);
renderer.setXLabelsAlign(Align.LEFT);
renderer.setYLabelsAlign(Align.LEFT);
renderer.setPanEnabled(false, false);
renderer.setZoomEnabled(false, false);
renderer.setZoomRate(1.0f);
renderer.setBarSpacing(0.5f);
for (int i = 0; i < checkio.size(); i++) {
CategorySeries series = new CategorySeries(checkio.get(i)); //여기서 예외가 나오는것 같습니다....
double[] v = values.get(i);
int seriesLength = v.length;
for (int k = 0; k < seriesLength; k++) {
series.add(v[k]);
}
dataset.addSeries(series.toXYSeries());
}
GraphicalView gv = ChartFactory.getBarChartView(context, dataset,renderer, Type.DEFAULT);
ll.addView(gv);
}catch(Exception e){System.out.println(e+"B");}
}
});
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch(keyCode) {
case KeyEvent.KEYCODE_BACK:
finish();
Intent chartback = new Intent( getApplicationContext(), HomeActivity.class );
startActivity(chartback);
return false;
default:
return false;
}
}
private ArrayList<String> getXmlDataList(String filename, String str) {
String rss = SERVER_ADDRESS + "/";
ArrayList<String> ret = new ArrayList<String>();
try { //XML 파싱을 위한 과정
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
URL server = new URL(rss + filename);
InputStream is = server.openStream();
xpp.setInput(is, "UTF-8");
int eventType = xpp.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_TAG) {
if(xpp.getName().equals(str)) {
ret.add(xpp.nextText());
}
}
eventType = xpp.next();
}
} catch(Exception e) {
System.out.println(e+"B");
}
return ret;
}
}