안드로이드 개발 질문/답변
(글 수 45,052)
package com.weather;
import java.net.URL;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Weather extends Activity implements Runnable {
EditText edtResult;
Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edtResult = (EditText)findViewById(R.id.result);
btn = (Button)findViewById(R.id.parse);
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
Thread th = new Thread(new Weather());
th.start();
}
});
}
@Override
public void run() {
try
{
URL url = new URL("http://www.kma.go.kr/XML/weather/sfc_web_map.xml");
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(url.openStream(), "utf-8");
String item = "";
String itemName = "";
String itemContents = "";
boolean bSet = false;
int eventType = parser.getEventType();
while ( eventType != XmlPullParser.END_DOCUMENT )
{
switch ( eventType )
{
case XmlPullParser.START_DOCUMENT :
break;
case XmlPullParser.END_DOCUMENT :
break;
case XmlPullParser.START_TAG :
String tag = parser.getName();
if ( tag.equals("local") )
{
itemContents = "";
String state = parser.getAttributeValue(null, "desc");
String temperature = "섭씨";
temperature += parser.getAttributeValue(null, "ta");
temperature += "º";
itemContents = state + " , " + temperature + " ";
bSet = true;
}
break;
case XmlPullParser.END_TAG :
break;
case XmlPullParser.TEXT :
if ( bSet )
{
itemName = "";
String region = parser.getText();
itemName += region + " - ";
item += itemName + itemContents;
item += "\n";
bSet = false;
}
break;
default:
break;
}
eventType = parser.next();
}
edtResult.setText(item);
}
catch ( Exception e )
{
}
}
}
이거 풀소스인데 스레드 쓰기전에는 되던 소스입니다.
그런데 스레드로 바꿧는데 값이 전혀 출력이 되지않습니다. 알려주세요~



