teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

枠の中に移動しました

2021/10/19 14:02

投稿

keikei3
keikei3

スコア2

title CHANGED
File without changes
body CHANGED
@@ -2,60 +2,17 @@
2
2
   教えてもらえたら幸いです。
3
3
    以下エラーメッセージ
4
4
     'com.test.asyncsample.MainActivity.WeatherInfoBackgroundReceiver' の 'WeatherInfoBackgroundReceiver(android.os.Handler, java.lang.String)' は '()' に適用できません
5
-      以下ソースコード
6
-           エラー部分はから行目です
5
+    エラー部分はから行目です
7
-
8
- コード
9
- `` 
10
-    public class MainActivity extends AppCompatActivity {
11
- //ログに記載するタグ用の文字列
12
- private static final String DEBUG_TAG = "AsyncSample";
13
- //お天気情報のURL
14
- private static final String WEATHERINFO_URL = "http://api.openweathermap.org/date/2.5/weather?lang=ja";
15
- //お天気apiにアクセスするためのapiキー
16
- private static final String APP_ID = "・・・";
17
- //リストビューに表示させるリストデータ
18
- private List<Map<String,String>> _list;
19
-
20
- @Override
21
- protected void onCreate(Bundle savedInstanceState) {
22
- super.onCreate(savedInstanceState);
23
- setContentView(R.layout.activity_main);
24
- _list = createList();
25
-
26
- ListView lvCityList = findViewById(R.id.lvCityList);
27
- String[] from = {"name"};
28
- int[] to = {android.R.id.text1} ;
29
- SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), _list,android.R.layout.simple_list_item_1,from,to);
30
- lvCityList.setAdapter(adapter);
31
- lvCityList.setOnItemClickListener(new ListItemClickListener());
32
- }
33
- //リストビューに表示させる天気ポイントリストデータを生成するメソッド
34
- private List<Map<String,String>>createList(){
35
- List<Map<String,String>>list = new ArrayList<>();
36
-
37
- Map<String,String>map = new HashMap<>();
38
- map.put("name","大阪");
39
- map.put("q","osaka");
40
- list.add(map);
41
- map = new HashMap<>();
42
- map.put("name","神戸");
43
- map.put("q","kobe");
44
- list.add(map);
45
-
46
- return list;
6
+ ```ここに言語を入力
47
-
48
- }
49
- //お天気情報の取得処理を行うメソッド
50
- @UiThread
51
- private void receiveWeatherInfo(final String urlFull){
7
+ private void receiveWeatherInfo(final String urlFull){
52
8
  Looper mainLooper = Looper.getMainLooper();
53
9
  Handler handler = HandlerCompat.createAsync(mainLooper);
54
10
  WeatherInfoBackgroundReceiver backgroundReceiver = new WeatherInfoBackgroundReceiver();
55
11
  ExecutorService executorService = Executors.newSingleThreadExecutor();
56
12
  executorService.submit(backgroundReceiver);
57
13
 
14
+ }
58
-        private class WeatherInfoBackgroundReceiver implements Runnable{
15
+ private class WeatherInfoBackgroundReceiver implements Runnable{
59
16
  //ハンドラオブジェクト
60
17
  private final Handler _handler;
61
18
  //お天気情報を取得するURL
@@ -76,6 +33,21 @@
76
33
  //天気情報サービスから取得したjson文字列。天気情報が格納されたいる
77
34
  String result = "";
78
35
  try {
79
- //URLオブジェクトを生成`
36
+ //URLオブジェクトを生成
80
-
37
+ URL url = new URL(_urlFull);
38
+ //URLオブジェクトからhttpURLConnectionオブジェクトを取得
39
+ con = (HttpURLConnection) url.openConnection();
40
+ //接続に使ってもいい時間を設定
41
+ con.setConnectTimeout(1000);
42
+ //データ取得に使っても良い時間
43
+ con.setReadTimeout(1000);
44
+ //http接続メソッドをgetに設定
45
+ con.setRequestMethod("GET");
46
+ //接続
47
+ con.connect();
48
+ //httpURLConnectionオブジェクトからレスポンスデータを取得
49
+ is = con.getInputStream();
50
+ //レスポンスうデータであるinputstreamオブジェクトを文字列に変換
51
+ result = is2String(is);
52
+ }
81
53
  ```

2

枠の中に移動しました

2021/10/19 14:02

投稿

keikei3
keikei3

スコア2

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,9 @@
5
5
       以下ソースコード
6
6
            エラー部分は下から三行目です
7
7
 
8
+ コード
9
+ `` 
8
-          public class MainActivity extends AppCompatActivity {
10
+    public class MainActivity extends AppCompatActivity {
9
11
  //ログに記載するタグ用の文字列
10
12
  private static final String DEBUG_TAG = "AsyncSample";
11
13
  //お天気情報のURL
@@ -74,4 +76,6 @@
74
76
  //天気情報サービスから取得したjson文字列。天気情報が格納されたいる
75
77
  String result = "";
76
78
  try {
77
- //URLオブジェクトを生成
79
+ //URLオブジェクトを生成`
80
+
81
+ ```

1

WeatherInfoBackgroundReceiverCLASSを追記しました

2021/10/19 14:00

投稿

keikei3
keikei3

スコア2

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,27 @@
51
51
  Handler handler = HandlerCompat.createAsync(mainLooper);
52
52
  WeatherInfoBackgroundReceiver backgroundReceiver = new WeatherInfoBackgroundReceiver();
53
53
  ExecutorService executorService = Executors.newSingleThreadExecutor();
54
- executorService.submit(backgroundReceiver);
54
+ executorService.submit(backgroundReceiver);
55
+
56
+        private class WeatherInfoBackgroundReceiver implements Runnable{
57
+ //ハンドラオブジェクト
58
+ private final Handler _handler;
59
+ //お天気情報を取得するURL
60
+ private final String _urlFull;
61
+
62
+ //コンストラクタ
63
+ public WeatherInfoBackgroundReceiver(Handler handler , String urlFull){
64
+ _handler = handler;
65
+ _urlFull = urlFull;
66
+ }
67
+ @WorkerThread
68
+ @Override
69
+ public void run(){
70
+ //http接続を行うhttpURLConnectionオブジェクトを宣言。finalyで開放するためにtry外で宣言
71
+ HttpURLConnection con = null;
72
+ //http接続のレスポンスデータとして取得するinputStreamオブジェクトを宣言。同じくtry外で宣言
73
+ InputStream is = null;
74
+ //天気情報サービスから取得したjson文字列。天気情報が格納されたいる
75
+ String result = "";
76
+ try {
77
+ //URLオブジェクトを生成