package com.inhatc.map;
import java.io.*;
import java.net.*;
import java.util.*;
import org.xmlpull.v1.*;
import com.inhatc.book.*;
import com.inhatc.bookandlibrary.*;
import android.app.*;
import android.content.*;
import android.os.*;
import android.util.*;
import android.widget.*;
public class NaverLocation extends Activity{
private String info;
// private ArrayList<LocationData> data;
private String apiKey = "apikey"; //여긴 제 api키값 입력되있구요
// private LocationData item;
private TextView txttitle, txtdesc, txttel, txtaddr, txtmapx, txtmapy;
String title = "";
String description = "";
String telephone = "";
String address = "";
String mapx = "";
String mapy = "";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
txttitle = (TextView)findViewById(R.id.textView1);
txtdesc = (TextView)findViewById(R.id.textView2);
txttel = (TextView)findViewById(R.id.textView3);
txtaddr = (TextView)findViewById(R.id.textView4);
txtmapx = (TextView)findViewById(R.id.textView5);
txtmapy = (TextView)findViewById(R.id.textView6);
Intent intent=getIntent();
Bundle myBundle = intent.getExtras();
info = myBundle.getString("key");
try{
info=URLEncoder.encode(info, "UTF8");
} catch(UnsupportedEncodingException e1){
e1.printStackTrace();
}
try{
URL text= new URL("http://openapi.naver.com/search?key="+apiKey+"&query="+info+"&target=local&start=1&display=10");
XmlPullParserFactory parserCreator = XmlPullParserFactory.newInstance();
XmlPullParser parser=parserCreator.newPullParser();
parser.setInput(text.openStream(),null);
Log.i("NET", "Parsing...");
int parseEvent = parser.getEventType();
while(parseEvent != XmlPullParser.END_DOCUMENT){
switch(parseEvent){
case XmlPullParser.TEXT:
String tag=parser.nextText();
if(tag.compareTo("title")==0){
title = parser.nextText();
Log.i("NET","START...");
}
if(tag.compareTo("description")==0){
description=parser.nextText();
}
if(tag.compareTo("telephone")==0){
telephone=parser.nextText();
}
if(tag.compareTo("address")==0){
address=parser.nextText();
}
if(tag.compareTo("mapx")==0){
mapx=parser.nextText();
}
if(tag.compareTo("mapy")==0){
mapy=parser.nextText();
}
break;
}
parseEvent=parser.next();
txttitle.setText(title);
txtdesc.setText(description);
txttel.setText(telephone);
txtaddr.setText(address);
txtmapx.setText(mapx);
txtmapy.setText(mapy);
}
Log.i("NET","End...");
} catch(Exception e)
{
Log.i("NET","Parsing fail");
e.printStackTrace();
}
}
}
이건 소스인데요 intent로 검색값 넘겨주고 파싱해서 TextView에 뿌리려고 하는데요 파싱 실패 나오고
06-09 14:45:17.598: W/System.err(1526): java.lang.NullPointerException
06-09 14:45:17.618: W/System.err(1526): at com.inhatc.map.NaverLocation.onCreate(NaverLocation.java:81)
06-09 14:45:17.618: W/System.err(1526): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
06-09 14:45:17.618: W/System.err(1526): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
06-09 14:45:17.618: W/System.err(1526): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
06-09 14:45:17.618: W/System.err(1526): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-09 14:45:17.618: W/System.err(1526): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
06-09 14:45:17.618: W/System.err(1526): at android.os.Handler.dispatchMessage(Handler.java:99)
06-09 14:45:17.618: W/System.err(1526): at android.os.Looper.loop(Looper.java:130)
06-09 14:45:17.618: W/System.err(1526): at android.app.ActivityThread.main(ActivityThread.java:3687)
06-09 14:45:17.622: W/System.err(1526): at java.lang.reflect.Method.invokeNative(Native Method)
06-09 14:45:17.622: W/System.err(1526): at java.lang.reflect.Method.invoke(Method.java:507)
06-09 14:45:17.622: W/System.err(1526): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
06-09 14:45:17.622: W/System.err(1526): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
06-09 14:45:17.622: W/System.err(1526): at dalvik.system.NativeStart.main(Native Method)
이렇게 에러 나네요ㅠㅠ
왜 그런지 이해가 안됩니다. ㅠㅠ 알려주세요ㅠ
아 그리고 이건 네이버 지역 api 파싱 하는 겁니다.




81번째줄이 뭔진 모르겠는데
tag.compareTo("mapx") 대신에
"mapx".equalsIgnoreCase(tag) 이런 식으로 사용하세요.
파싱할때는 compareTo 보다 equals 또는 equalsIgnoreCase를 사용하는게 유리하고
태그명을 앞에 가져다 놓고 비교해야 NullPointerException 을 피할 수 있습니다.