回答編集履歴

2

コメントに対する追記

2019/10/10 08:42

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -41,3 +41,61 @@
41
41
 
42
42
 
43
43
  これを参考にして修正することで解決できないでしょうか。
44
+
45
+
46
+
47
+ ---
48
+
49
+ (コメントに対する追記)
50
+
51
+
52
+
53
+ 他のところの警告は次のようにすれば回避できるのでは。
54
+
55
+
56
+
57
+ ```kotlin
58
+
59
+ @Suppress("UNCHECKED_CAST")
60
+
61
+ val item = parent.getItemAtPosition(position) as Map<String, String>
62
+
63
+
64
+
65
+
66
+
67
+ //tvCityName.setText(cityName + "の天気:") //エラー: Use of setter method insted of property access syntax
68
+
69
+ tvCityName.text = "${cityName}の天気:" // ${}で変数を文字列中に展開できる
70
+
71
+
72
+
73
+ (中略)
74
+
75
+
76
+
77
+ @SuppressLint("StaticFieldLeak")
78
+
79
+ private inner class WeatherInfoReceiver : AsyncTask<String, String, String>() {
80
+
81
+ ```
82
+
83
+
84
+
85
+ setText()やgetText()のようなsetter/getterが用意されたJavaメソッドは、Kotlinでは上記のようにイコールで代入する記述ができるようになっており、そちらが推奨されています。ご提示のコードでも、
86
+
87
+
88
+
89
+ ```kotlin
90
+
91
+ lvCityList.adapter = adapter
92
+
93
+ ```
94
+
95
+
96
+
97
+ ではその手法を使われていますよね?むしろ、こちらではsetAdapter()を使わずにKotlin的な記述をされているのに、setText()の方はなぜそのままにしてしまったのかなと思います。
98
+
99
+
100
+
101
+ 他の2つについては、警告を発しないようにアノテーションを付与しておけばいいかと思います。

1

修正

2019/10/10 08:42

投稿

keicha_hrs
keicha_hrs

スコア6768

test CHANGED
@@ -1,3 +1,43 @@
1
+ アプリが落ちたときのLogCatを参照すると、多分
2
+
3
+
4
+
5
+ ```
6
+
7
+ Caused by: java.io.IOException: Cleartext HTTP traffic to weather.livedoor.com not permitted
8
+
9
+ at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115)
10
+
11
+ at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:458)
12
+
13
+ at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
14
+
15
+ at jp.hrs.keicha.myapplication.MainActivity$WeatherInfoReceiver.doInBackground(MainActivity.kt:73)
16
+
17
+ at jp.hrs.keicha.myapplication.MainActivity$WeatherInfoReceiver.doInBackground(MainActivity.kt:58)
18
+
19
+ at android.os.AsyncTask$2.call(AsyncTask.java:333)
20
+
21
+ at java.util.concurrent.FutureTask.run(FutureTask.java:266)
22
+
1
- compileSdkVersionが28(Android 9.0)以上ならば、下記の内容を参考にすることで解決できないでしょうか。
23
+ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) 
24
+
25
+ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
26
+
27
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
28
+
29
+ at java.lang.Thread.run(Thread.java:764) 
30
+
31
+ ```
32
+
33
+
34
+
35
+ みたいなエラーログが出ていることと思います。ここで、`Cleartext HTTP traffic to`をキーワードにして検索すると、一例として次のような情報が見つかります。
36
+
37
+
2
38
 
3
39
  [Android 9(Pie)でHTTP通信を有効にする | Qiita](https://qiita.com/b_a_a_d_o/items/afa0d83bbffdb5d4f6be)
40
+
41
+
42
+
43
+ これを参考にして修正することで解決できないでしょうか。