せでぃのブログ

ブログ初心者おいどんのどうでもいい愚痴やどうでもいい愚痴やどうでもいいマメ知識などを披露するチラシの裏です。

Unhandled Exception type ParseException

 いつも通り、無料テキストのSyllabusというプロジェクトの途中で行き詰まったので。p.117あたり。問題は2つ。やっとJSON入りのプロジェクトが動いたず。
f:id:Sediment:20150613142518j:plain
稼働確認済みのソースはこの辺に上げとく。github.com

1.Unhandled Exception type ParseException

f:id:Sediment:20150613135421p:plain

date = inputDateFormat.parse(dateStr);

ここで、「Unhandled Exception type ParseException」というエラーが出たが、

} catch (java.text.ParseException e) {

ParseExceptionのクラスをちょっと書き換えたら直った。以上。


MainActivity.java修正前

private void setCourseArray(JSONArray array) throws JSONException {
	int num = array.length();
	SimpleDateFormat inputDateFormat = new SimpleDateFormat("yyyy-MM-dd");
	for(int i = 0; i < num; i++) {
		CourseItem item = new CourseItem();
		JSONObject obj = array.getJSONObject(i);
		String dateStr = obj.getString("date");
		Date date = null;
		try {
			// str型からdate型の定型に変換
			date = inputDateFormat.parse(dateStr);
			item.date = date;
			item.title = obj.getString("title");
			item.teacher = obj.getString("teacher");
			item.detail = obj.getString("detail");
			itemList.add(item);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
	adapter.notifyDataSetChanged();
}

MainActivity.java修正後

private void setCourseArray(JSONArray array) throws JSONException {
	int num = array.length();
	SimpleDateFormat inputDateFormat = new SimpleDateFormat("yyyy-MM-dd");
	for(int i = 0; i < num; i++) {
		CourseItem item = new CourseItem();
		JSONObject obj = array.getJSONObject(i);
		String dateStr = obj.getString("date");
		Date date = null;
		try {
			// str型からdate型の定型に変換
			date = inputDateFormat.parse(dateStr);
			item.date = date;
			item.title = obj.getString("title");
			item.teacher = obj.getString("teacher");
			item.detail = obj.getString("detail");
			itemList.add(item);
		} catch (java.text.ParseException e) {
			e.printStackTrace();
		}
	}
	adapter.notifyDataSetChanged();
}

2.通信が始まらない

f:id:Sediment:20150613142550p:plain
 Logcatを開くと、犬も歩けばhit a stick(internetがpermission denied)的なメッセージが。AndroidManifest.xmlの真ん中辺に以下を追記。
f:id:Sediment:20150613143030p:plain
 追記文の内容はこれ。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

 これで動くはず。