質問編集履歴

15

マークダウン記法を用いて読みやすくしました。

2020/12/13 10:38

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -406,8 +406,132 @@
406
406
 
407
407
  ```
408
408
 
409
-
409
+ ###【ターミナル】
410
+
410
-
411
+ ```
412
+
413
+ iMac215-2011:ddd admin$ curl "http://api.openweathermap.org/data/2.5/forecast?id=1850147&units=metric&cnt=1&appid="MyAppID" | jq '.'
414
+
415
+ % Total % Received % Xferd Average Speed Time Time Time Current
416
+
411
- ![イメージ説明](7bd6aac8b87a66b44e1070cdd708e8b2.png)
417
+ Dload Upload Total Spent Left Speed
418
+
419
+ 100 590 100 590 0 0 2163 0 --:--:-- --:--:-- --:--:-- 2169
420
+
421
+ {
422
+
423
+ "cod": "200",
424
+
425
+ "message": 0,
426
+
427
+ "cnt": 1,
428
+
429
+ "list": [
430
+
431
+ {
432
+
433
+ "dt": 1607860800,
434
+
435
+ "main": {
436
+
437
+ "temp": 10.04,
438
+
439
+ "feels_like": 6.37,
440
+
441
+ "temp_min": 10.04,
442
+
443
+ "temp_max": 10.54,
444
+
445
+ "pressure": 1010,
446
+
447
+ "sea_level": 1010,
448
+
449
+ "grnd_level": 1006,
450
+
451
+ "humidity": 78,
452
+
453
+ "temp_kf": -0.5
454
+
455
+ },
456
+
457
+ "weather": [
458
+
459
+ {
460
+
461
+ "id": 802,
462
+
463
+ "main": "Clouds",
464
+
465
+ "description": "scattered clouds",
466
+
467
+ "icon": "03n"
468
+
469
+ }
470
+
471
+ ],
472
+
473
+ "clouds": {
474
+
475
+ "all": 43
476
+
477
+ },
478
+
479
+ "wind": {
480
+
481
+ "speed": 4.05,
482
+
483
+ "deg": 97
484
+
485
+ },
486
+
487
+ "visibility": 10000,
488
+
489
+ "pop": 0,
490
+
491
+ "sys": {
492
+
493
+ "pod": "n"
494
+
495
+ },
496
+
497
+ "dt_txt": "2020-12-13 12:00:00"
498
+
499
+ }
500
+
501
+ ],
502
+
503
+ "city": {
504
+
505
+ "id": 1850147,
506
+
507
+ "name": "Tokyo",
508
+
509
+ "coord": {
510
+
511
+ "lat": 35.6895,
512
+
513
+ "lon": 139.6917
514
+
515
+ },
516
+
517
+ "country": "JP",
518
+
519
+ "population": 0,
520
+
521
+ "timezone": 32400,
522
+
523
+ "sunrise": 1607809343,
524
+
525
+ "sunset": 1607844516
526
+
527
+ }
528
+
529
+ }
530
+
531
+ iMac215-2011:ddd admin$
532
+
533
+
534
+
535
+ ```
412
536
 
413
537
  ![イメージ説明](77f8aa2f869a633ac316d07fe5d76e22.png)

14

2020/12/13 10:38

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -88,7 +88,7 @@
88
88
 
89
89
  ###【AndroidManifest.xml】
90
90
 
91
- ``xml
91
+ ```xml
92
92
 
93
93
  ?xml version="1.0" encoding="utf-8"?>
94
94
 

13

2020/12/13 07:07

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -88,7 +88,7 @@
88
88
 
89
89
  ###【AndroidManifest.xml】
90
90
 
91
- ```xml
91
+ ``xml
92
92
 
93
93
  ?xml version="1.0" encoding="utf-8"?>
94
94
 

12

画像を挿入しました

2020/12/13 03:02

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- #androidStudioで天気予報のアプリを作りたいのですが、エラーが出まお力お貸しして頂けないでしょうか。
1
+ #androidStudioで天気予報のアプリを作りたいのですが、jsonで取得したデが出力出来せん
2
2
 
3
3
  ####[参照][天気予報のアプリ](https://tech-blog.rakus.co.jp/entry/android-studio/weather-hacks)
4
4
 

11

画像を挿入しました

2020/12/10 22:06

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -188,7 +188,7 @@
188
188
 
189
189
  try {
190
190
 
191
- new AsyncHttpRequest(this).execute(new URL("http://api.openweathermap.org/data/2.5/forecast?id=1850147&units=metric&cnt=1&appid=MY {APEKEY}"));
191
+ new AsyncHttpRequest(this).execute(new URL("http://api.openweathermap.org/data/2.5/forecast?id=1850147&units=metric&cnt=1&appid={MY APEKEY}"));
192
192
 
193
193
  } catch (MalformedURLException e) {
194
194
 

10

画像を挿入しました

2020/12/10 21:54

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -4,11 +4,9 @@
4
4
 
5
5
 
6
6
 
7
- #エラーメッセージ
7
+
8
-
9
- ###W/System.err: 正常に接続できていません。statusCode:302
8
+
10
-
11
- ![イメージ説明](35271dd2af1090fa82ba4204aeb6afdf.png)
9
+
12
10
 
13
11
  ###【activity_main.xml】
14
12
 
@@ -190,7 +188,7 @@
190
188
 
191
189
  try {
192
190
 
193
- new AsyncHttpRequest(this).execute(new URL("http://weather.livedoor.com/forecast/webservice/json/v1?city=270000"));
191
+ new AsyncHttpRequest(this).execute(new URL("http://api.openweathermap.org/data/2.5/forecast?id=1850147&units=metric&cnt=1&appid=MY {APEKEY}"));
194
192
 
195
193
  } catch (MalformedURLException e) {
196
194
 
@@ -352,11 +350,11 @@
352
350
 
353
351
  JSONObject jsonObject = new JSONObject(response.toString());
354
352
 
355
- JSONObject todayForcasts = jsonObject.getJSONArray("forecasts").getJSONObject(TODAY_FORCAST_INDEX);
353
+ JSONObject todayForcasts = jsonObject.getJSONArray("weather").getJSONObject(TODAY_FORCAST_INDEX);
356
-
357
-
358
-
354
+
355
+
356
+
359
- return todayForcasts.getString("dateLabel") + "の天気は " + todayForcasts.getString("telop");
357
+ return "今日の天気は" + todayForcasts.getString("main");
360
358
 
361
359
  } catch (IOException e) {
362
360
 
@@ -410,6 +408,6 @@
410
408
 
411
409
 
412
410
 
413
-
411
+ ![イメージ説明](7bd6aac8b87a66b44e1070cdd708e8b2.png)
414
412
 
415
413
  ![イメージ説明](77f8aa2f869a633ac316d07fe5d76e22.png)

9

エラーメッセージを加えました。

2020/12/10 21:53

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,9 +1,15 @@
1
- #androidStudioで天気予報のアプリを作りたいのですが、その日の天気情報が出ません。(エラーていせんお力お貸しして頂けないでしょうか。
1
+ #androidStudioで天気予報のアプリを作りたいのですが、エラー出ま。お力お貸しして頂けないでしょうか。
2
2
 
3
3
  ####[参照][天気予報のアプリ](https://tech-blog.rakus.co.jp/entry/android-studio/weather-hacks)
4
4
 
5
5
 
6
6
 
7
+ #エラーメッセージ
8
+
9
+ ###W/System.err: 正常に接続できていません。statusCode:302
10
+
11
+ ![イメージ説明](35271dd2af1090fa82ba4204aeb6afdf.png)
12
+
7
13
  ###【activity_main.xml】
8
14
 
9
15
 
@@ -404,6 +410,6 @@
404
410
 
405
411
 
406
412
 
407
- ![イメージ説明](0f73d55f9f5befc51ab1590f582143c0.png)
413
+
408
414
 
409
415
  ![イメージ説明](77f8aa2f869a633ac316d07fe5d76e22.png)

8

マークダウン記法を用いて読みやすくしました。

2020/11/29 21:50

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- #androidStudioで天気予報のアプリを作りたいのですが、その日の天気情報が出ません。(エラーは出ていません。)お力お貸しして頂けないでしょうか。
1
+ #androidStudioで天気予報のアプリを作りたいのですが、その日の天気情報が出ません。(エラーは出ていません。)お力お貸しして頂けないでしょうか。
2
2
 
3
3
  ####[参照][天気予報のアプリ](https://tech-blog.rakus.co.jp/entry/android-studio/weather-hacks)
4
4
 

7

画像を挿入しました

2020/11/29 05:30

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -405,3 +405,5 @@
405
405
 
406
406
 
407
407
  ![イメージ説明](0f73d55f9f5befc51ab1590f582143c0.png)
408
+
409
+ ![イメージ説明](77f8aa2f869a633ac316d07fe5d76e22.png)

6

参照リンクも増やしました。

2020/11/29 05:28

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -401,3 +401,7 @@
401
401
 
402
402
 
403
403
  ```
404
+
405
+
406
+
407
+ ![イメージ説明](0f73d55f9f5befc51ab1590f582143c0.png)

5

マークダウン記法を用いて読みやすくしました。

2020/11/29 05:24

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,120 +1,206 @@
1
- #androidStudioで天気予報のアプリを作りたいのですが、シンボル見つかりませんエラー出まどうかお力お貸しして頂けないでしょうか。
1
+ #androidStudioで天気予報のアプリを作りたいのですが、その日の天気情報ません。(エラーていせん)お力お貸しして頂けないでしょうか。
2
2
 
3
3
  ####[参照][天気予報のアプリ](https://tech-blog.rakus.co.jp/entry/android-studio/weather-hacks)
4
4
 
5
+
6
+
5
- ## エラーメッセージ
7
+ ###【activity_main.xml】
6
-
7
-
8
-
9
-
10
-
11
-
12
-
8
+
9
+
10
+
13
- ```
11
+ ```xml
12
+
14
-
13
+ <?xml version="1.0" encoding="utf-8"?>
14
+
15
- new AsyncHttpRequest(result.this).execute(new URL("http://weather.livedoor.com/forecast/webservice/json/v1?city=270000"));
15
+ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
16
+
16
-
17
+ xmlns:app="http://schemas.android.com/apk/res-auto"
18
+
19
+ xmlns:tools="http://schemas.android.com/tools"
20
+
21
+ android:layout_width="match_parent"
22
+
23
+ android:layout_height="match_parent"
24
+
25
+ tools:context=".MainActivity">
26
+
27
+
28
+
29
+ <TextView
30
+
31
+ android:id="@+id/messageTextView"
32
+
33
+ android:text="Hello World!!"
34
+
35
+ android:textSize="32sp"
36
+
37
+ android:layout_width="wrap_content"
38
+
39
+ android:layout_height="wrap_content"
40
+
41
+ app:layout_constraintTop_toTopOf="parent"
42
+
43
+ app:layout_constraintLeft_toLeftOf="parent"
44
+
45
+ android:layout_marginLeft="101dp"
46
+
47
+ android:layout_marginTop="81dp" />
48
+
49
+
50
+
17
- ^
51
+ <Button
52
+
18
-
53
+ android:id="@+id/mybottun"
54
+
55
+ android:onClick="changeTextView"
56
+
19
- シンボル: クラス AsyncHttpRequest
57
+ android:text="ラベルを変更"
58
+
20
-
59
+ android:layout_width="wrap_content"
60
+
61
+ android:layout_height="wrap_content"
62
+
63
+ app:layout_constraintTop_toTopOf="parent"
64
+
65
+ app:layout_constraintLeft_toLeftOf="parent"
66
+
21
- 場所: クラス MainActivity
67
+ android:layout_marginLeft="138dp"
68
+
69
+ android:layout_marginTop="160dp" />
70
+
71
+
72
+
73
+ </androidx.constraintlayout.widget.ConstraintLayout>
22
74
 
23
75
  ```
24
76
 
25
77
 
26
78
 
79
+
80
+
81
+
82
+
83
+
84
+
27
- ###【activity_main.xml】
85
+ ###【AndroidManifest.xml】
28
-
29
-
30
86
 
31
87
  ```xml
32
88
 
33
- <?xml version="1.0" encoding="utf-8"?>
34
-
35
- <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
36
-
37
- xmlns:app="http://schemas.android.com/apk/res-auto"
38
-
39
- xmlns:tools="http://schemas.android.com/tools"
40
-
41
- android:layout_width="match_parent"
42
-
43
- android:layout_height="match_parent"
44
-
45
- tools:context=".MainActivity">
46
-
47
-
48
-
49
- <TextView
50
-
51
- android:id="@+id/messageTextView"
52
-
53
- android:text="Hello World!!"
54
-
55
- android:textSize="32sp"
56
-
57
- android:layout_width="wrap_content"
58
-
59
- android:layout_height="wrap_content"
60
-
61
- app:layout_constraintTop_toTopOf="parent"
62
-
63
- app:layout_constraintLeft_toLeftOf="parent"
64
-
65
- android:layout_marginLeft="101dp"
66
-
67
- android:layout_marginTop="81dp" />
68
-
69
-
70
-
71
- <Button
72
-
73
- android:id="@+id/mybottun"
74
-
75
- android:onClick="changeTextView"
76
-
77
- android:text="ラベルを変更"
78
-
79
- android:layout_width="wrap_content"
80
-
81
- android:layout_height="wrap_content"
82
-
83
- app:layout_constraintTop_toTopOf="parent"
84
-
85
- app:layout_constraintLeft_toLeftOf="parent"
86
-
87
- android:layout_marginLeft="138dp"
88
-
89
- android:layout_marginTop="160dp" />
90
-
91
-
92
-
93
- </androidx.constraintlayout.widget.ConstraintLayout>
89
+ ?xml version="1.0" encoding="utf-8"?>
90
+
91
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
92
+
93
+ package="com.example.ddd">
94
+
95
+ <!-- ネット接続を許可する -->
96
+
97
+ <uses-permission android:name="android.permission.INTERNET" />
98
+
99
+ <application
100
+
101
+ android:allowBackup="true"
102
+
103
+ android:icon="@mipmap/ic_launcher"
104
+
105
+ android:label="@string/app_name"
106
+
107
+ android:roundIcon="@mipmap/ic_launcher_round"
108
+
109
+ android:supportsRtl="true"
110
+
111
+ android:theme="@style/AppTheme">
112
+
113
+
114
+
115
+ <activity android:name=".MainActivity">
116
+
117
+ <intent-filter>
118
+
119
+
120
+
121
+ <action android:name="android.intent.action.MAIN" />
122
+
123
+
124
+
125
+ <category android:name="android.intent.category.LAUNCHER" />
126
+
127
+
128
+
129
+ </intent-filter>
130
+
131
+ </activity>
132
+
133
+ </application>
134
+
135
+
136
+
137
+ </manifest>
94
138
 
95
139
  ```
96
140
 
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
-
105
- ###【AndroidManifest.xml
141
+ ###【MainActivity.java
106
-
142
+
143
+
144
+
107
- ```xml
145
+ ```java
108
-
146
+
109
- <!-- ネット接続を許可する -->
147
+ package com.example.ddd;
148
+
149
+
150
+
110
-
151
+ import androidx.appcompat.app.AppCompatActivity;
152
+
153
+ import java.net.MalformedURLException;
154
+
155
+ import java.net.URL;
156
+
157
+ import android.os.Bundle;
158
+
159
+ import android.view.View;
160
+
161
+ import android.widget.TextView;
162
+
163
+
164
+
165
+ public class MainActivity extends AppCompatActivity {
166
+
167
+
168
+
169
+ @Override
170
+
111
- <uses-permission android:name="android.permission.INTERNET" />
171
+ protected void onCreate(Bundle savedInstanceState) {
172
+
112
-
173
+ super.onCreate(savedInstanceState);
174
+
113
-
175
+ setContentView(R.layout.activity_main);
176
+
177
+ }
178
+
179
+
180
+
181
+ public void changeTextView(View view) {
182
+
183
+ // 非同期処理(AsyncHttpRequest#doInBackground())を呼び出す
184
+
185
+ try {
186
+
187
+ new AsyncHttpRequest(this).execute(new URL("http://weather.livedoor.com/forecast/webservice/json/v1?city=270000"));
188
+
189
+ } catch (MalformedURLException e) {
190
+
191
+ e.printStackTrace();
192
+
193
+ }
194
+
195
+ }
196
+
197
+ }
114
198
 
115
199
  ```
116
200
 
201
+
202
+
117
- ###【MainActivity.java】
203
+ ###【AsyncHttpRequest.java】
118
204
 
119
205
 
120
206
 
@@ -124,256 +210,194 @@
124
210
 
125
211
 
126
212
 
127
- import androidx.appcompat.app.AppCompatActivity;
213
+ import android.app.Activity;
214
+
128
-
215
+ import android.os.AsyncTask;
216
+
217
+ import android.widget.TextView;
218
+
219
+ import com.example.ddd.R;
220
+
221
+ import org.json.JSONException;
222
+
223
+ import org.json.JSONObject;
224
+
225
+ import java.io.BufferedReader;
226
+
227
+ import java.io.IOException;
228
+
229
+ import java.io.InputStream;
230
+
231
+ import java.io.InputStreamReader;
232
+
129
- import java.net.MalformedURLException;
233
+ import java.net.HttpURLConnection;
130
234
 
131
235
  import java.net.URL;
132
236
 
237
+ /**
238
+
239
+ * 非同期処理を行うクラス.
240
+
241
+ */
242
+
243
+ public final class AsyncHttpRequest extends AsyncTask<URL, Void, String> {
244
+
133
- import android.os.Bundle;
245
+ private int TODAY_FORCAST_INDEX = 0;
134
-
135
- import android.view.View;
246
+
136
-
137
- import android.widget.TextView;
247
+ private Activity mainActivity;
138
-
139
-
140
-
248
+
249
+
250
+
141
- public class MainActivity extends AppCompatActivity {
251
+ public AsyncHttpRequest(Activity activity) {
252
+
142
-
253
+ // 呼び出し元のアクティビティ
254
+
143
-
255
+ this.mainActivity = activity;
256
+
257
+ }
258
+
259
+
260
+
261
+ /**
262
+
263
+ * 非同期処理で天気情報を取得する.
264
+
265
+ * @param urls 接続先のURL
266
+
267
+ * @return 取得した天気情報
268
+
269
+ */
144
270
 
145
271
  @Override
146
272
 
147
- protected void onCreate(Bundle savedInstanceState) {
273
+ protected String doInBackground(URL... urls) {
274
+
275
+
276
+
148
-
277
+ final URL url = urls[0];
278
+
279
+ HttpURLConnection con = null;
280
+
281
+
282
+
283
+ try {
284
+
285
+ con = (HttpURLConnection) url.openConnection();
286
+
287
+ con.setRequestMethod("GET");
288
+
289
+ // リダイレクトを自動で許可しない設定
290
+
291
+ con.setInstanceFollowRedirects(false);
292
+
293
+ con.connect();
294
+
295
+
296
+
297
+ final int statusCode = con.getResponseCode();
298
+
299
+ if (statusCode != HttpURLConnection.HTTP_OK) {
300
+
301
+ System.err.println("正常に接続できていません。statusCode:" + statusCode);
302
+
303
+ return null;
304
+
305
+ }
306
+
307
+
308
+
309
+ // レスポンス(JSON文字列)を読み込む準備
310
+
149
- super.onCreate(savedInstanceState);
311
+ final InputStream in = con.getInputStream();
150
-
312
+
151
- setContentView(R.layout.activity_main);
313
+ String encoding = con.getContentEncoding();
314
+
315
+ if(null == encoding){
316
+
317
+ encoding = "UTF-8";
318
+
319
+ }
320
+
321
+ final InputStreamReader inReader = new InputStreamReader(in, encoding);
322
+
323
+ final BufferedReader bufReader = new BufferedReader(inReader);
324
+
325
+ StringBuilder response = new StringBuilder();
326
+
327
+ String line = null;
328
+
329
+ // 1行ずつ読み込む
330
+
331
+ while((line = bufReader.readLine()) != null) {
332
+
333
+ response.append(line);
334
+
335
+ }
336
+
337
+ bufReader.close();
338
+
339
+ inReader.close();
340
+
341
+ in.close();
342
+
343
+
344
+
345
+ // 受け取ったJSON文字列をパース
346
+
347
+ JSONObject jsonObject = new JSONObject(response.toString());
348
+
349
+ JSONObject todayForcasts = jsonObject.getJSONArray("forecasts").getJSONObject(TODAY_FORCAST_INDEX);
350
+
351
+
352
+
353
+ return todayForcasts.getString("dateLabel") + "の天気は " + todayForcasts.getString("telop");
354
+
355
+ } catch (IOException e) {
356
+
357
+ e.printStackTrace();
358
+
359
+ return null;
360
+
361
+ } catch (JSONException e) {
362
+
363
+ e.printStackTrace();
364
+
365
+ return null;
366
+
367
+ } finally {
368
+
369
+ if (con != null) {
370
+
371
+ con.disconnect();
372
+
373
+ }
374
+
375
+ }
152
376
 
153
377
  }
154
378
 
155
379
 
156
380
 
381
+ /**
382
+
383
+ * 非同期処理が終わった後の処理.
384
+
385
+ * @param result 非同期処理の結果得られる文字列
386
+
387
+ */
388
+
389
+ @Override
390
+
157
- public void changeTextView(View view) {
391
+ protected void onPostExecute(String result) {
158
-
392
+
159
- // 非同期処理(AsyncHttpRequest#doInBackground())を呼び出す
393
+ TextView tv = mainActivity.findViewById(R.id.messageTextView);
160
-
161
- try {
394
+
162
-
163
- new AsyncHttpRequest(this).execute(new URL("http://weather.livedoor.com/forecast/webservice/json/v1?city=270000"));
164
-
165
- } catch (MalformedURLException e) {
166
-
167
- e.printStackTrace();
395
+ tv.setText(result);
168
-
169
- }
170
396
 
171
397
  }
172
398
 
173
399
  }
174
400
 
401
+
402
+
175
403
  ```
176
-
177
-
178
-
179
- ###【AsyncHttpRequest.java】
180
-
181
-
182
-
183
- ```java
184
-
185
- import android.app.Activity;
186
-
187
- import android.os.AsyncTask;
188
-
189
- import android.widget.TextView;
190
-
191
-
192
-
193
- import com.example.ddd.R;
194
-
195
-
196
-
197
- import org.json.JSONException;
198
-
199
- import org.json.JSONObject;
200
-
201
- import java.io.BufferedReader;
202
-
203
- import java.io.IOException;
204
-
205
- import java.io.InputStream;
206
-
207
- import java.io.InputStreamReader;
208
-
209
- import java.net.HttpURLConnection;
210
-
211
- import java.net.URL;
212
-
213
- /**
214
-
215
- * 非同期処理を行うクラス.
216
-
217
- */
218
-
219
- public final class AsyncHttpRequest extends AsyncTask<URL, Void, String> {
220
-
221
- private int TODAY_FORCAST_INDEX = 0;
222
-
223
- private Activity mainActivity;
224
-
225
-
226
-
227
- public AsyncHttpRequest(Activity activity) {
228
-
229
- // 呼び出し元のアクティビティ
230
-
231
- this.mainActivity = activity;
232
-
233
- }
234
-
235
-
236
-
237
- /**
238
-
239
- * 非同期処理で天気情報を取得する.
240
-
241
- * @param urls 接続先のURL
242
-
243
- * @return 取得した天気情報
244
-
245
- */
246
-
247
- @Override
248
-
249
- protected String doInBackground(URL... urls) {
250
-
251
-
252
-
253
- final URL url = urls[0];
254
-
255
- HttpURLConnection con = null;
256
-
257
-
258
-
259
- try {
260
-
261
- con = (HttpURLConnection) url.openConnection();
262
-
263
- con.setRequestMethod("GET");
264
-
265
- // リダイレクトを自動で許可しない設定
266
-
267
- con.setInstanceFollowRedirects(false);
268
-
269
- con.connect();
270
-
271
-
272
-
273
- final int statusCode = con.getResponseCode();
274
-
275
- if (statusCode != HttpURLConnection.HTTP_OK) {
276
-
277
- System.err.println("正常に接続できていません。statusCode:" + statusCode);
278
-
279
- return null;
280
-
281
- }
282
-
283
-
284
-
285
- // レスポンス(JSON文字列)を読み込む準備
286
-
287
- final InputStream in = con.getInputStream();
288
-
289
- String encoding = con.getContentEncoding();
290
-
291
- if(null == encoding){
292
-
293
- encoding = "UTF-8";
294
-
295
- }
296
-
297
- final InputStreamReader inReader = new InputStreamReader(in, encoding);
298
-
299
- final BufferedReader bufReader = new BufferedReader(inReader);
300
-
301
- StringBuilder response = new StringBuilder();
302
-
303
- String line = null;
304
-
305
- // 1行ずつ読み込む
306
-
307
- while((line = bufReader.readLine()) != null) {
308
-
309
- response.append(line);
310
-
311
- }
312
-
313
- bufReader.close();
314
-
315
- inReader.close();
316
-
317
- in.close();
318
-
319
-
320
-
321
- // 受け取ったJSON文字列をパース
322
-
323
- JSONObject jsonObject = new JSONObject(response.toString());
324
-
325
- JSONObject todayForcasts = jsonObject.getJSONArray("forecasts").getJSONObject(TODAY_FORCAST_INDEX);
326
-
327
-
328
-
329
- return todayForcasts.getString("dateLabel") + "の天気は " + todayForcasts.getString("telop");
330
-
331
- } catch (IOException e) {
332
-
333
- e.printStackTrace();
334
-
335
- return null;
336
-
337
- } catch (JSONException e) {
338
-
339
- e.printStackTrace();
340
-
341
- return null;
342
-
343
- } finally {
344
-
345
- if (con != null) {
346
-
347
- con.disconnect();
348
-
349
- }
350
-
351
- }
352
-
353
- }
354
-
355
-
356
-
357
- /**
358
-
359
- * 非同期処理が終わった後の処理.
360
-
361
- * @param result 非同期処理の結果得られる文字列
362
-
363
- */
364
-
365
- @Override
366
-
367
- protected void onPostExecute(String result) {
368
-
369
- TextView tv = mainActivity.findViewById(R.id.messageTextView);
370
-
371
- tv.setText(result);
372
-
373
- }
374
-
375
- }
376
-
377
-
378
-
379
- ```

4

参照リンクも増やしました。

2020/11/29 05:10

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  #androidStudioで天気予報のアプリを作りたいのですが、シンボルが見つかりませんとエラーが出ます。どうかお力お貸しして頂けないでしょうか。
2
2
 
3
- ####[参照]https://tech-blog.rakus.co.jp/entry/android-studio/weather-hacks
3
+ ####[参照][天気予報のアプリ](https://tech-blog.rakus.co.jp/entry/android-studio/weather-hacks)
4
4
 
5
5
  ## エラーメッセージ
6
6
 

3

参照リンクも増やしました。

2020/11/27 09:46

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  #androidStudioで天気予報のアプリを作りたいのですが、シンボルが見つかりませんとエラーが出ます。どうかお力お貸しして頂けないでしょうか。
2
2
 
3
- ####[リンク](https://tech-blog.rakus.co.jp/entry/android-studio/weather-)hacks)
3
+ ####[参照](https://tech-blog.rakus.co.jp/entry/android-studio/weather-)hacks)
4
4
 
5
5
  ## エラーメッセージ
6
6
 
@@ -10,7 +10,9 @@
10
10
 
11
11
 
12
12
 
13
+ ```
14
+
13
- new AsyncHttpRequest(result.this).execute(new URL("http://weather.livedoor.com/forecast/webservice/json/v1?city=270000"));
15
+ new AsyncHttpRequest(result.this).execute(new URL("http://weather.livedoor.com/forecast/webservice/json/v1?city=270000"));
14
16
 
15
17
  ^
16
18
 
@@ -18,11 +20,9 @@
18
20
 
19
21
  場所: クラス MainActivity
20
22
 
21
-
22
-
23
-
24
-
25
- ### 該当のソースコード
23
+ ```
24
+
25
+
26
26
 
27
27
  ###【activity_main.xml】
28
28
 

2

参照リンクも増やしました。

2020/11/27 09:40

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  #androidStudioで天気予報のアプリを作りたいのですが、シンボルが見つかりませんとエラーが出ます。どうかお力お貸しして頂けないでしょうか。
2
2
 
3
- ####[参照](https://tech-blog.rakus.co.jp/entry/android-studio/weather-)hacks)
3
+ ####[リンク](https://tech-blog.rakus.co.jp/entry/android-studio/weather-)hacks)
4
4
 
5
5
  ## エラーメッセージ
6
6
 

1

マークダウン記法を用いて読みやすくしました。

2020/11/27 09:33

投稿

shinmo
shinmo

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,114 +1,124 @@
1
- ### 前提・実現したいこと
2
-
3
- androidStudioで天気予報のアプリを作りたいのですが、シンボルが見つかりませんとエラーが出ます。どうかお力お貸しして頂けないでしょうか。
1
+ #androidStudioで天気予報のアプリを作りたいのですが、シンボルが見つかりませんとエラーが出ます。どうかお力お貸しして頂けないでしょうか。
4
-
2
+
5
- 参照(https://tech-blog.rakus.co.jp/entry/android-studio/weather-)hacks)
3
+ ####[参照](https://tech-blog.rakus.co.jp/entry/android-studio/weather-)hacks)
6
-
4
+
7
- ### 発生している問題・エラーメッセージ
5
+ ## エラーメッセージ
6
+
7
+
8
+
9
+
10
+
11
+
12
+
8
-
13
+ new AsyncHttpRequest(result.this).execute(new URL("http://weather.livedoor.com/forecast/webservice/json/v1?city=270000"));
14
+
9
-
15
+ ^
16
+
17
+ シンボル: クラス AsyncHttpRequest
18
+
19
+ 場所: クラス MainActivity
20
+
21
+
22
+
23
+
24
+
25
+ ### 該当のソースコード
26
+
27
+ ###【activity_main.xml】
28
+
29
+
30
+
31
+ ```xml
32
+
33
+ <?xml version="1.0" encoding="utf-8"?>
34
+
35
+ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
36
+
37
+ xmlns:app="http://schemas.android.com/apk/res-auto"
38
+
39
+ xmlns:tools="http://schemas.android.com/tools"
40
+
41
+ android:layout_width="match_parent"
42
+
43
+ android:layout_height="match_parent"
44
+
45
+ tools:context=".MainActivity">
46
+
47
+
48
+
49
+ <TextView
50
+
51
+ android:id="@+id/messageTextView"
52
+
53
+ android:text="Hello World!!"
54
+
55
+ android:textSize="32sp"
56
+
57
+ android:layout_width="wrap_content"
58
+
59
+ android:layout_height="wrap_content"
60
+
61
+ app:layout_constraintTop_toTopOf="parent"
62
+
63
+ app:layout_constraintLeft_toLeftOf="parent"
64
+
65
+ android:layout_marginLeft="101dp"
66
+
67
+ android:layout_marginTop="81dp" />
68
+
69
+
70
+
71
+ <Button
72
+
73
+ android:id="@+id/mybottun"
74
+
75
+ android:onClick="changeTextView"
76
+
77
+ android:text="ラベルを変更"
78
+
79
+ android:layout_width="wrap_content"
80
+
81
+ android:layout_height="wrap_content"
82
+
83
+ app:layout_constraintTop_toTopOf="parent"
84
+
85
+ app:layout_constraintLeft_toLeftOf="parent"
86
+
87
+ android:layout_marginLeft="138dp"
88
+
89
+ android:layout_marginTop="160dp" />
90
+
91
+
92
+
93
+ </androidx.constraintlayout.widget.ConstraintLayout>
10
94
 
11
95
  ```
12
96
 
13
- new AsyncHttpRequest(result.this).execute(new URL("http://weather.livedoor.com/forecast/webservice/json/v1?city=270000"));
97
+
14
-
15
- ^
98
+
16
-
17
- シンボル: クラス AsyncHttpRequest
99
+
18
-
100
+
101
+
102
+
103
+
104
+
19
- 場所: クラス MainActivity
105
+ ###【AndroidManifest.xml】
106
+
107
+ ```xml
108
+
109
+ <!-- ネット接続を許可する -->
110
+
111
+ <uses-permission android:name="android.permission.INTERNET" />
112
+
113
+
20
114
 
21
115
  ```
22
116
 
23
-
24
-
25
- ### 該当のソースコード
26
-
27
- 【activity_main.xml】
28
-
29
-
30
-
31
- <?xml version="1.0" encoding="utf-8"?>
32
-
33
- <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
34
-
35
- xmlns:app="http://schemas.android.com/apk/res-auto"
36
-
37
- xmlns:tools="http://schemas.android.com/tools"
38
-
39
- android:layout_width="match_parent"
40
-
41
- android:layout_height="match_parent"
42
-
43
- tools:context=".MainActivity">
44
-
45
-
46
-
47
- <TextView
48
-
49
- android:id="@+id/messageTextView"
50
-
51
- android:text="Hello World!!"
52
-
53
- android:textSize="32sp"
54
-
55
- android:layout_width="wrap_content"
56
-
57
- android:layout_height="wrap_content"
58
-
59
- app:layout_constraintTop_toTopOf="parent"
60
-
61
- app:layout_constraintLeft_toLeftOf="parent"
62
-
63
- android:layout_marginLeft="101dp"
64
-
65
- android:layout_marginTop="81dp" />
66
-
67
-
68
-
69
- <Button
70
-
71
- android:id="@+id/mybottun"
72
-
73
- android:onClick="changeTextView"
74
-
75
- android:text="ラベルを変更"
76
-
77
- android:layout_width="wrap_content"
78
-
79
- android:layout_height="wrap_content"
80
-
81
- app:layout_constraintTop_toTopOf="parent"
82
-
83
- app:layout_constraintLeft_toLeftOf="parent"
84
-
85
- android:layout_marginLeft="138dp"
86
-
87
- android:layout_marginTop="160dp" />
88
-
89
-
90
-
91
- </androidx.constraintlayout.widget.ConstraintLayout>
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
- 【AndroidManifest.xml】
102
-
103
- <!-- ネット接続を許可する -->
104
-
105
- <uses-permission android:name="android.permission.INTERNET" />
106
-
107
-
108
-
109
- 【MainActivity.java】
117
+ ###【MainActivity.java】
118
+
119
+
120
+
110
-
121
+ ```java
111
-
112
122
 
113
123
  package com.example.ddd;
114
124
 
@@ -162,11 +172,15 @@
162
172
 
163
173
  }
164
174
 
165
-
175
+ ```
166
-
176
+
177
+
178
+
167
- 【AsyncHttpRequest】
179
+ ###【AsyncHttpRequest.java
180
+
181
+
182
+
168
-
183
+ ```java
169
-
170
184
 
171
185
  import android.app.Activity;
172
186
 
@@ -359,3 +373,7 @@
359
373
  }
360
374
 
361
375
  }
376
+
377
+
378
+
379
+ ```