質問編集履歴
2
全てのコードを載せるため、修正を加えた。
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,6 +20,122 @@
|
|
20
20
|
|
21
21
|
```Kotlin(Main.kt)
|
22
22
|
|
23
|
+
|
24
|
+
|
25
|
+
class MainActivity : AppCompatActivity() {
|
26
|
+
|
27
|
+
//lateinitはonCreate外にあるbindingを紐づけるため
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
//下記3つはEditText型
|
32
|
+
|
33
|
+
lateinit var editWeight: EditText
|
34
|
+
|
35
|
+
lateinit var editAge: EditText
|
36
|
+
|
37
|
+
lateinit var editHight: EditText
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
//下記2つはRadioButton型
|
42
|
+
|
43
|
+
lateinit var radioMan: RadioButton
|
44
|
+
|
45
|
+
lateinit var radioWoman: RadioButton
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
//下記3つはButton型
|
50
|
+
|
51
|
+
lateinit var infoButton: Button
|
52
|
+
|
53
|
+
lateinit var keisanButton: Button
|
54
|
+
|
55
|
+
lateinit var nextButton: Button
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
//上の8つの宣言はbinding.idで直指定出来るため必要のないフィールド
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
//男女どちらがチェックされたかを判断する変数
|
64
|
+
|
65
|
+
var man_is_checkd = false
|
66
|
+
|
67
|
+
var woman_is_checked = false
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
//?はnull許容型このままでは計算できない
|
72
|
+
|
73
|
+
var weight: Float? = 0f
|
74
|
+
|
75
|
+
var age: Float? = 0f
|
76
|
+
|
77
|
+
var hight: Float? = 0f
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
private lateinit var binding: ActivityMainBinding //binding
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
86
|
+
|
87
|
+
super.onCreate(savedInstanceState)
|
88
|
+
|
89
|
+
binding = ActivityMainBinding.inflate(layoutInflater)//binding
|
90
|
+
|
91
|
+
setContentView(binding.root)//binding
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
//それぞれのviewとの紐付け
|
96
|
+
|
97
|
+
//先にも書いたが、直指定出来るため変数にいれる必要もないがjavaの復習のため
|
98
|
+
|
99
|
+
editWeight = binding.weight
|
100
|
+
|
101
|
+
editAge = binding.age
|
102
|
+
|
103
|
+
editHight = binding.hight
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
radioMan = binding.man
|
108
|
+
|
109
|
+
radioWoman = binding.woman
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
infoButton = binding.infoBtn
|
114
|
+
|
115
|
+
keisanButton = binding.keisanBtn
|
116
|
+
|
117
|
+
nextButton = binding.nextBtn
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
//binding.ID.メソッド(文字or整数など)
|
124
|
+
|
125
|
+
binding.welcomDA.setText("WelcomDaietAdviser")
|
126
|
+
|
127
|
+
binding.textView2.setText("まずは基礎代謝を計算しましょう!")
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
//計算結果を格納するプロパティ(javaでいうフィールド)
|
134
|
+
|
135
|
+
var kisotaisya: Float
|
136
|
+
|
137
|
+
|
138
|
+
|
23
139
|
binding.keisanBtn.setOnClickListener {
|
24
140
|
|
25
141
|
|
@@ -74,6 +190,34 @@
|
|
74
190
|
|
75
191
|
|
76
192
|
|
193
|
+
//前回入力した数値を記憶しておく処理
|
194
|
+
|
195
|
+
binding.infoBtn.setOnClickListener {
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
val data: SharedPreferences = getSharedPreferences("DATA", Context.MODE_PRIVATE)
|
200
|
+
|
201
|
+
val editor = data.edit()
|
202
|
+
|
203
|
+
editor.putFloat("WEIGHT", weight!!)
|
204
|
+
|
205
|
+
editor.putFloat("AGE", age!!)
|
206
|
+
|
207
|
+
editor.putFloat("HIGHT", hight!!)
|
208
|
+
|
209
|
+
editor.apply()
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
}
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
|
77
221
|
binding.nextBtn.setOnClickListener {
|
78
222
|
|
79
223
|
startActivity(Intent(this, ResultActivity1::class.java).apply {
|
@@ -92,9 +236,99 @@
|
|
92
236
|
|
93
237
|
}
|
94
238
|
|
239
|
+
}
|
240
|
+
|
241
|
+
|
242
|
+
|
243
|
+
fun onClickRadioButton(view: View) {
|
244
|
+
|
245
|
+
if (view is RadioButton) { //ラジオボタンからしか呼ばれないため不要な処理
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
val checked: Boolean = view.isChecked //ラジオボタンがチェックされた
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
when (view.getId()) {
|
254
|
+
|
255
|
+
R.id.man -> if (checked) { //viewのidがmanで、もしcheckedならmanをtruewomanをfalse
|
256
|
+
|
257
|
+
man_is_checkd = true
|
258
|
+
|
259
|
+
woman_is_checked = false
|
260
|
+
|
261
|
+
}
|
262
|
+
|
263
|
+
R.id.woman -> if (checked) {
|
264
|
+
|
265
|
+
man_is_checkd = false
|
266
|
+
|
267
|
+
woman_is_checked = true
|
268
|
+
|
269
|
+
}
|
270
|
+
|
271
|
+
}
|
272
|
+
|
273
|
+
}
|
274
|
+
|
275
|
+
}
|
276
|
+
|
277
|
+
}
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
95
283
|
```
|
96
284
|
|
97
|
-
```
|
285
|
+
```result.kt
|
286
|
+
|
287
|
+
class ResultActivity1 : AppCompatActivity() {
|
288
|
+
|
289
|
+
lateinit var binding: ActivityResult1Binding
|
290
|
+
|
291
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
292
|
+
|
293
|
+
super.onCreate(savedInstanceState)
|
294
|
+
|
295
|
+
binding=ActivityResult1Binding.inflate(layoutInflater)
|
296
|
+
|
297
|
+
setContentView(binding.root)
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
binding.Text1.setText("基礎代謝を計算しましょう!")
|
302
|
+
|
303
|
+
binding.textStrong.setText("高強度TR")
|
304
|
+
|
305
|
+
binding.textMidium.setText("中強度TR")
|
306
|
+
|
307
|
+
binding.textLow.setText("低強度TR")
|
308
|
+
|
309
|
+
binding.textWalking.setText("ウォーキング")
|
310
|
+
|
311
|
+
binding.textSit.setText("座位")
|
312
|
+
|
313
|
+
binding.textStand.setText("立位(立ち姿勢)")
|
314
|
+
|
315
|
+
binding.min1.setText("分")
|
316
|
+
|
317
|
+
binding.min2.setText("分")
|
318
|
+
|
319
|
+
binding.min3.setText("分")
|
320
|
+
|
321
|
+
binding.min4.setText("分")
|
322
|
+
|
323
|
+
binding.min5.setText("分")
|
324
|
+
|
325
|
+
binding.min6.setText("分")
|
326
|
+
|
327
|
+
binding.todayActive1.setText("今日の活動代謝は")
|
328
|
+
|
329
|
+
binding.totalKcal1.setText("今日の消費カロリー")
|
330
|
+
|
331
|
+
|
98
332
|
|
99
333
|
binding.activeKeisanBtn.setOnClickListener {
|
100
334
|
|
@@ -142,6 +376,16 @@
|
|
142
376
|
|
143
377
|
|
144
378
|
|
379
|
+
//活動代謝の合計とmain.java出したkisotaisyaの合計を計算
|
380
|
+
|
381
|
+
//val totalKcal2 = katudoTaisya + //mainActivutyのkisotaisyaを使いたい
|
382
|
+
|
383
|
+
//binding.totalKcal2.setText(totalKcal2)
|
384
|
+
|
385
|
+
|
386
|
+
|
387
|
+
|
388
|
+
|
145
389
|
//各運動別の活動代謝計算式
|
146
390
|
|
147
391
|
//活動代謝の出し方(例)(2.5METs-1) × 60kg × 0.5時間 × 1.05 = 78.75kcal
|
@@ -168,4 +412,8 @@
|
|
168
412
|
|
169
413
|
binding.todayActive2.setText(katudoTaisya.toString())
|
170
414
|
|
415
|
+
|
416
|
+
|
417
|
+
|
418
|
+
|
171
419
|
```
|
1
文章をわかりやすく変えた
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,84 +1,128 @@
|
|
1
|
-
やりたいこと
|
1
|
+
●やりたいこと
|
2
2
|
|
3
|
-
|
3
|
+
Android StudioにてMain.ktからResult.ktへFloat型の値を送りたい。
|
4
4
|
|
5
|
-
|
5
|
+
Mainにて、putExtra("WEIGHT", weight!!)で格納された値をResultにて同じくgetFloatExtra("WEIGHT", weight!!)で受け取ろうとしているのですが、エラーとなり何度試しても解決策がわかりません。。。
|
6
6
|
|
7
|
-
|
7
|
+
現在はエラーが出ないように、val Weight = intent.getFloatExtra("WEIGHT", 0f)としてデフォルト値0を入れているのですが、これだと0のため計算ができず、どの計算の答えも0となってしまいます。
|
8
|
-
|
9
|
-
調べた所、メソッド内の変数の有効範囲外なのかな、、と思っております。
|
10
8
|
|
11
9
|
|
12
10
|
|
13
|
-
|
11
|
+
おそらく質問の仕方がうまくなく、ご指摘頂くかもしれませんが初心者のためどのような質問がいいか未だにわかっておりません、、。
|
14
12
|
|
15
|
-
result.javaにintent.getFloatExtra("KISOTAISYA", 0f);
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
を完成させるには何が足りないでしょうか?
|
20
|
-
|
21
|
-
また、初心者なので解説もいただけたら嬉しいです、、。
|
22
|
-
|
23
|
-
よろしくお願い致します。
|
13
|
+
何卒よろしくお願い致します。
|
24
14
|
|
25
15
|
|
26
16
|
|
27
17
|
|
28
18
|
|
29
|
-
```Kotlin
|
30
19
|
|
20
|
+
|
21
|
+
```Kotlin(Main.kt)
|
22
|
+
|
31
|
-
|
23
|
+
binding.keisanBtn.setOnClickListener {
|
32
24
|
|
33
25
|
|
34
26
|
|
35
|
-
|
27
|
+
val weight = editWeight.text.toString().toFloatOrNull()
|
36
28
|
|
37
|
-
|
29
|
+
val age = editAge.text.toString().toFloatOrNull()
|
38
30
|
|
39
|
-
|
31
|
+
val height = editHight.text.toString().toFloatOrNull()
|
40
32
|
|
41
|
-
|
33
|
+
if (weight == null || age == null || height == null) {
|
42
34
|
|
43
|
-
|
35
|
+
AlertDialog.Builder(this)
|
44
36
|
|
45
|
-
|
37
|
+
.setTitle(R.string.dialog_title_invalid_input)
|
46
38
|
|
47
|
-
|
39
|
+
.setPositiveButton(android.R.string.ok, null).show()
|
48
40
|
|
49
|
-
|
41
|
+
return@setOnClickListener
|
50
42
|
|
51
|
-
|
43
|
+
}
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
if (man_is_checkd) { //男が選ばれた処理
|
48
|
+
|
49
|
+
kisotaisya = 13.397f * weight!! + 4.799f * height!! - 5.677f * age!! + 88.362f
|
50
|
+
|
51
|
+
} else if (woman_is_checked) { //女が選ばれた処理
|
52
|
+
|
53
|
+
kisotaisya = 9.247f * weight!! + 3.098f * height!! - 4.33f * age!! + 447.593f
|
54
|
+
|
55
|
+
} else { //どちらも選ばれていない
|
56
|
+
|
57
|
+
AlertDialog.Builder(this)
|
58
|
+
|
59
|
+
.setTitle(R.string.dialog_title_invalid_input)
|
60
|
+
|
61
|
+
.setPositiveButton(android.R.string.ok, null).show()
|
62
|
+
|
63
|
+
return@setOnClickListener
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
binding.kisotaisya.setText(kisotaisya.toString())
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
}
|
52
72
|
|
53
73
|
|
54
74
|
|
55
75
|
|
56
76
|
|
77
|
+
binding.nextBtn.setOnClickListener {
|
78
|
+
|
79
|
+
startActivity(Intent(this, ResultActivity1::class.java).apply {
|
80
|
+
|
81
|
+
putExtra("WEIGHT", weight!!)
|
82
|
+
|
83
|
+
putExtra("AGE", age!!)
|
84
|
+
|
85
|
+
putExtra("HIGHT", hight!!)
|
86
|
+
|
57
|
-
//
|
87
|
+
//putExtra("KISOTAISYA", kiso)//if文で計算したkisotaisyaを入れて、ResultActivityで使いたいができない)
|
88
|
+
|
89
|
+
})
|
58
90
|
|
59
91
|
|
60
92
|
|
61
|
-
|
93
|
+
}
|
62
94
|
|
63
|
-
|
95
|
+
```
|
64
96
|
|
65
|
-
|
97
|
+
```(Result.kt)
|
66
98
|
|
67
|
-
|
99
|
+
binding.activeKeisanBtn.setOnClickListener {
|
68
100
|
|
69
|
-
|
101
|
+
val editTR1 = binding.editTR1.text.toString().toFloatOrNull()
|
70
102
|
|
71
|
-
|
103
|
+
val editTR2 = binding.editTR2.text.toString().toFloatOrNull()
|
72
104
|
|
73
|
-
|
105
|
+
val editTR3 = binding.editTR3.text.toString().toFloatOrNull()
|
74
106
|
|
75
|
-
|
107
|
+
val editWalk = binding.editWalk.text.toString().toFloatOrNull()
|
76
108
|
|
77
|
-
|
109
|
+
val editSit = binding.editSit.text.toString().toFloatOrNull()
|
78
110
|
|
79
|
-
|
111
|
+
val editStand = binding.editStand.text.toString().toFloatOrNull()
|
80
112
|
|
113
|
+
|
114
|
+
|
115
|
+
if(editTR1 == null || editTR2 == null || editTR3 == null || editWalk == null
|
116
|
+
|
117
|
+
|| editSit == null || editStand == null) {
|
118
|
+
|
119
|
+
AlertDialog.Builder(this)
|
120
|
+
|
81
|
-
|
121
|
+
.setTitle(R.string.dialog_title_invalid_input)
|
122
|
+
|
123
|
+
.setPositiveButton(android.R.string.ok, null).show()
|
124
|
+
|
125
|
+
return@setOnClickListener
|
82
126
|
|
83
127
|
|
84
128
|
|
@@ -86,29 +130,7 @@
|
|
86
130
|
|
87
131
|
|
88
132
|
|
89
|
-
|
133
|
+
//putExtraで格納された値を変数に入れる処理
|
90
|
-
|
91
|
-
startActivity(Intent(this, ResultActivity1::class.java).apply {
|
92
|
-
|
93
|
-
putExtra("WEIGHT", weight!!) //!!はnullじゃなくてFloatだよということ
|
94
|
-
|
95
|
-
putExtra("AGE", age!!)
|
96
|
-
|
97
|
-
putExtra("HIGHT", hight!!)
|
98
|
-
|
99
|
-
putExtra("KISOTAISYA", kisotaisya)//if文で計算したkisotaisyaを入れて、ResultActivityで使いたい)
|
100
|
-
|
101
|
-
})
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
}
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
```
|
110
|
-
|
111
|
-
```Kotlin
|
112
134
|
|
113
135
|
val Weight = intent.getFloatExtra("WEIGHT", 0f)
|
114
136
|
|
@@ -116,7 +138,7 @@
|
|
116
138
|
|
117
139
|
val Hight = intent.getFloatExtra("HIGHT", 0f)
|
118
140
|
|
119
|
-
val kisotaisya3 = intent.getFloatExtra("KISOTAISYA", 0f)
|
141
|
+
val kisotaisya3 = intent.getFloatExtra("KISOTAISYA", 0f);
|
120
142
|
|
121
143
|
|
122
144
|
|
@@ -124,17 +146,17 @@
|
|
124
146
|
|
125
147
|
//活動代謝の出し方(例)(2.5METs-1) × 60kg × 0.5時間 × 1.05 = 78.75kcal
|
126
148
|
|
127
|
-
val active1 = 5f * Weight * editTR1 * 1.05f
|
149
|
+
val active1 = 5f * Weight * editTR1!! * 1.05f
|
128
150
|
|
129
|
-
val active2 = 4f * Weight * editTR2 * 1.05f
|
151
|
+
val active2 = 4f * Weight * editTR2!! * 1.05f
|
130
152
|
|
131
|
-
val active3 = 3.5f * Weight * editTR3 * 1.05f
|
153
|
+
val active3 = 3.5f * Weight * editTR3!! * 1.05f
|
132
154
|
|
133
|
-
val activeWalk = 1.8f * Weight * editWalk * 1.05f
|
155
|
+
val activeWalk = 1.8f * Weight * editWalk!! * 1.05f
|
134
156
|
|
135
|
-
val activeStand = 0.8f * Weight * editStand * 1.05f
|
157
|
+
val activeStand = 0.8f * Weight * editStand!! * 1.05f
|
136
158
|
|
137
|
-
val activeSit = 0.5f * Weight * editSit * 1.05f
|
159
|
+
val activeSit = 0.5f * Weight * editSit!! * 1.05f
|
138
160
|
|
139
161
|
|
140
162
|
|
@@ -144,14 +166,6 @@
|
|
144
166
|
|
145
167
|
//結果を画面に表示
|
146
168
|
|
147
|
-
binding.todayActive2.setText(katudoTaisya.toString()) //katudoTaisyaはFloat型だから、セットするにはString型にする
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
//活動代謝の合計とmain.java出したkisotaisyaの合計を計算
|
152
|
-
|
153
|
-
val totalKcal2 = katudoTaisya + //mainActivutyのkisotaisyaを使いたい
|
154
|
-
|
155
|
-
binding.to
|
169
|
+
binding.todayActive2.setText(katudoTaisya.toString())
|
156
170
|
|
157
171
|
```
|