하나의 액티비티에서 가로로 중앙을 나눠 위쪽은 그리드뷰 아래쪽은 리스트뷰로 레이아웃을 만든 상태에서
그리드뷰에 버튼을 동적으로 생성해서 그 버튼을 누르면 그 버튼에 적혀있는 텍스트를 가져와서
XML 파싱으로 JSP 연결해서 오라클 DB에서 원하는 데이터를 가져와서 현재 액티비티 ListView에 리스트 셋팅을 하는데
안드로이드 4.3 이전 버젼에서는 잘 작동하는데 4.4 이상버젼에선 파싱하다가
오픈스트림에서 멈추면서 어플이 꺼지는 현상입니다
멈추는 줄은 class ParSingThread2 extends Thread의
parser.setInput(url.openStream(), "EUC-KR"); 줄에서 멈춥니다
아래 java파일과 로그를 올립니다
일주일간 해결방법을 찾아봤는데 제가 기초가 부족해서인지 일주일째 이 오류에서 진전이 없어서
고수분들의 도움을 부탁드립니다 ㅠㅠ 소스가 너무길어서 문제가 되는 구문과 연계되는 소스만 올립니다 ㅠ
java
class ParSingThread2 extends Thread {
XmlPullParser parser;
URL url = null;
Item item;
public void run() {
try {
Log.v("Page_2", "8" + usid);
String mainUrl = "http://"+getString(R.string.url)+":8088/m_db/WebContent/m_Room_PatientList.jsp?room=" + selRoom;
url = new URL(mainUrl);
Log.v("Page_2", "9" + usid);
XmlPullParserFactory parserCreator = XmlPullParserFactory.newInstance();
Log.v("Page_2", "10" + usid);
parser = parserCreator.newPullParser();
Log.v("Page_2", "11" + usid);
parser.setInput(url.openStream(), "EUC-KR");
Log.v("Page_2", "12" + usid);
String parserName = null;
int parserEvent = parser.getEventType();
while (parserEvent != XmlPullParser.END_DOCUMENT) {
switch (parserEvent) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.END_DOCUMENT:
break;
case XmlPullParser.START_TAG: // START_TAG 부분일 경우
parserName = parser.getName();
if (parserName.equals("data")) {
listItems = new ArrayList<Item>();
} else if (parserName.equals("pa_list")) {
item = new Item();
}
break;
case XmlPullParser.END_TAG:
parserName = parser.getName();
if (parserName.equals("data")) {
} else if (parserName.equals("pa_list")) {
listItems.add(item);
item = null;
}
parserName = null;
break;
case XmlPullParser.TEXT:
if (parserName != null) {
if (parserName.equals("ROOM")) {
item.setRoom(parser.getText().trim());
} else if (parserName.equals("PAID")) {
item.setPaid(parser.getText().trim());
} else if (parserName.equals("NWNO")) {
item.setNwno(parser.getText().trim());
} else if (parserName.equals("PANM")) {
item.setPanm(parser.getText().trim());
} else if (parserName.equals("AGES")) {
item.setAges(parser.getText().trim());
} else if (parserName.equals("SEXS")) {
item.setSexs(parser.getText().trim());
} else if (parserName.equals("INSP")) {
item.setInsp(parser.getText().trim());
} else if (parserName.equals("IWDT")) {
item.setIwdt(parser.getText().trim());
} else if (parserName.equals("DPCD")) {
item.setDpcd(parser.getText().trim());
} else if (parserName.equals("DOCD")) {
item.setDocd(parser.getText().trim());
} else if (parserName.equals("SBNM")) {
item.setSknm01(parser.getText().trim());
}
}
break;
}
parserEvent = parser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
mHandler.sendEmptyMessage(PARSING_FINISH2);
}
}
logcat
12-09 10:19:35.675: W/System.err(9157): java.net.ProtocolException: Unexpected status line:
12-09 10:19:35.685: W/System.err(9157): at com.android.okhttp.internal.http.RawHeaders.setStatusLine(RawHeaders.java:108)
12-09 10:19:35.685: W/System.err(9157): at com.android.okhttp.internal.http.RawHeaders.fromBytes(RawHeaders.java:308)
12-09 10:19:35.685: W/System.err(9157): at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:135)
12-09 10:19:35.685: W/System.err(9157): at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:644)
12-09 10:19:35.690: W/System.err(9157): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347)
12-09 10:19:35.690: W/System.err(9157): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
12-09 10:19:35.690: W/System.err(9157): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:179)
12-09 10:19:35.690: W/System.err(9157): at java.net.URL.openStream(URL.java:470)
12-09 10:19:35.690: W/System.err(9157): at com.gsen.mchart.Ward_Main_Activity$ParSingThread2.run(Ward_Main_Activity.java:374)
12-09 10:19:35.690: V/items2(9157): 겟카운트
12-09 10:19:35.695: D/AndroidRuntime(9157): Shutting down VM
12-09 10:19:35.695: W/dalvikvm(9157): threadid=1: thread exiting with uncaught exception (group=0x423d3c08)
12-09 10:19:35.700: E/AndroidRuntime(9157): FATAL EXCEPTION: main
12-09 10:19:35.700: E/AndroidRuntime(9157): Process: com.gsen.mchart, PID: 9157
12-09 10:19:35.700: E/AndroidRuntime(9157): java.lang.NullPointerException
12-09 10:19:35.700: E/AndroidRuntime(9157): at com.gsen.mchart.Ward_Main_Activity$PatientListAdapter.getCount(Ward_Main_Activity.java:542)
12-09 10:19:35.700: E/AndroidRuntime(9157): at android.widget.ListView.setAdapter(ListView.java:492)
12-09 10:19:35.700: E/AndroidRuntime(9157): at com.gsen.mchart.Ward_Main_Activity$6.handleMessage(Ward_Main_Activity.java:182)