質問編集履歴

1

Markdownに変更しました。文字数制限のため全てを載せらませんでしたが、何か他に載せる方法はあるのでしょうか?

2020/03/25 12:24

投稿

makotonisio
makotonisio

スコア4

test CHANGED
File without changes
test CHANGED
@@ -8,17 +8,15 @@
8
8
 
9
9
  ### 発生している問題・エラーメッセージ
10
10
 
11
- お世話になっております。
12
-
13
- 勉強の一環として作っているアプリにて、フラグメントに設置したEditTextの入力欄が文字を入力しても変化しないという問題が起きした
11
+ フラグメントに設置したEditTextの入力欄が文字を入力しても変化しません
12
+
14
-
13
+ エンターキー押す、フォーカスを外すことで入力した文字は表示されます。
14
+
15
- ただエンターキー押す、フォーカスを外すことで入力した文字は表示されます。またそのEditTextの入力によってステータスの数値が変化するようTextWatherに記入したのですが、これは入力中は一部だけしか動かず、エンターを押すことでやっと全て反映されます。
15
+ EditTextのChangeListenerに他のViewへの反映について記入したのですが、これは入力中は一部だけしか動かず、エンターを押すことでやっと全て反映されます。
16
-
16
+
17
- LinearLayoutに複数のEditTextを入れているのですが、なぜか一番上のEditTextは正常に働きます。
17
+ LinearLayoutに複数のEditTextを入れているのですが、一番上のEditTextは正常に働きます。
18
-
18
+
19
- またAPI26以前で実施しても問題なく動作します。
19
+ またAPI2で実施しても問題なく動作します。
20
-
21
- APIに対する処置の問題だと考えていますが、どれだけ調べても私にはわかりませんでした。
22
20
 
23
21
 
24
22
 
@@ -26,7 +24,11 @@
26
24
 
27
25
  ### 該当のソースコード
28
26
 
27
+ ```
28
+
29
- フラグメントのレイアウト(一部抜粋)
29
+ <?xml version="1.0" encoding="utf-8"?>
30
+
31
+
30
32
 
31
33
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
32
34
 
@@ -44,344 +46,582 @@
44
46
 
45
47
  android:orientation="vertical"
46
48
 
49
+ tools:context=".hero.MakingHero.MakedHeroA">
50
+
51
+
52
+
53
+ <LinearLayout
54
+
55
+ android:layout_width="match_parent"
56
+
57
+ android:layout_height="0dp"
58
+
59
+ android:layout_weight="0.15"
60
+
61
+ android:orientation="horizontal">
62
+
63
+ <Button
64
+
65
+ android:id="@+id/samCount"
66
+
67
+ android:layout_width="0dp"
68
+
69
+ android:layout_height="match_parent"
70
+
71
+ android:layout_weight="0.2"/>
72
+
73
+ </LinearLayout>
74
+
75
+
76
+
77
+ <ImageButton
78
+
79
+ android:id="@+id/heroImage"
80
+
81
+ android:layout_width="match_parent"
82
+
83
+ android:layout_height="match_parent"
84
+
85
+ android:background="@android:color/holo_orange_light"
86
+
87
+ android:focusable="true"
88
+
89
+ android:focusableInTouchMode="true"
90
+
91
+ android:src="@drawable/black_bow_front_circle" />
92
+
93
+
94
+
95
+ <LinearLayout
96
+
97
+ android:id="@+id/stetusLayout"
98
+
99
+ android:layout_width="match_parent"
100
+
101
+ android:layout_height="0dp"
102
+
103
+ android:layout_weight="0.5"
104
+
105
+ android:baselineAligned="false"
106
+
107
+ android:orientation="horizontal">
108
+
109
+
110
+
111
+ <LinearLayout
112
+
113
+ android:layout_width="0dp"
114
+
115
+ android:layout_height="match_parent"
116
+
117
+ android:layout_weight="0.6"
118
+
119
+ android:orientation="vertical"
120
+
121
+ android:visibility="visible">
122
+
123
+
124
+
125
+ <TextView
126
+
127
+ android:id="@+id/hp"
128
+
129
+ android:layout_width="match_parent"
130
+
131
+ android:layout_height="0dp"
132
+
133
+ android:layout_weight="1"/>
134
+
135
+
136
+
137
+ <TextView
138
+
139
+ android:id="@+id/power"
140
+
141
+ android:layout_width="match_parent"
142
+
143
+ android:layout_height="0dp"
144
+
145
+ android:layout_weight="1"/>
146
+
147
+
148
+
149
+ <TextView
150
+
151
+ android:id="@+id/def"
152
+
153
+ android:layout_width="match_parent"
154
+
155
+ android:layout_height="0dp"
156
+
157
+ android:layout_weight="1"
158
+
159
+ android:focusable="true"
160
+
161
+ android:focusableInTouchMode="true"/>
162
+
163
+ </LinearLayout>
164
+
165
+
166
+
167
+ <LinearLayout
168
+
169
+ android:layout_width="0dp"
170
+
171
+ android:layout_height="match_parent"
172
+
173
+ android:layout_weight="0.2"
174
+
175
+ android:orientation="vertical">
176
+
177
+
178
+
179
+ <EditText
180
+
181
+ android:id="@+id/plusHp"
182
+
183
+ android:layout_width="match_parent"
184
+
185
+ android:layout_height="0dp"
186
+
187
+ android:layout_weight="1"
188
+
189
+ android:gravity="bottom|center"
190
+
191
+ android:hint="@string/count0_50"
192
+
193
+ android:inputType="number"
194
+
195
+ android:lines="1"
196
+
197
+ android:maxLength="2"
198
+
199
+ android:nextFocusDown="@+id/def"
200
+
201
+ android:nextFocusForward="@+id/def" />
202
+
203
+
204
+
205
+ <EditText
206
+
207
+ android:id="@+id/plusPow"
208
+
209
+ android:layout_width="match_parent"
210
+
211
+ android:layout_height="0dp"
212
+
213
+ android:layout_weight="1"
214
+
215
+ android:gravity="bottom|center"
216
+
217
+ android:hint="@string/count0_50"
218
+
219
+ android:inputType="number"
220
+
221
+ android:lines="1"
222
+
223
+ android:maxLength="2"
224
+
225
+ android:nextFocusDown="@+id/def"
226
+
227
+ android:nextFocusForward="@+id/def" />
228
+
229
+ </LinearLayout>
230
+
231
+ </LinearLayout>
232
+
233
+ </LinearLayout>
234
+
235
+ ```
236
+
237
+
238
+
239
+ ```
240
+
241
+ package com.example.word_battle.hero.MakingHero
242
+
243
+
244
+
245
+
246
+
247
+ import android.content.Context
248
+
249
+ import android.content.Intent
250
+
251
+ import android.net.Uri
252
+
253
+ import android.os.Bundle
254
+
255
+ import android.text.Editable
256
+
257
+ import androidx.fragment.app.Fragment
258
+
259
+ import android.view.LayoutInflater
260
+
261
+ import android.view.View
262
+
263
+ import android.view.ViewGroup
264
+
265
+ import android.text.TextWatcher
266
+
267
+ import android.view.inputmethod.InputMethodManager
268
+
269
+ import android.widget.EditText
270
+
271
+
272
+
273
+ class MakedHeroA: Fragment(),TextWatcher {
274
+
275
+
276
+
277
+ val textStetus = "%3s:%03d..+:%02d"
278
+
279
+
280
+
281
+ fun sumCoun(sum:Int,count:Int):Int{
282
+
283
+ var sumX :Int = sum.minus(count)
284
+
285
+ samCount.text="$sumX"
286
+
287
+ return sumX
288
+
289
+ }
290
+
291
+
292
+
293
+ fun hpManage(A:Hero){
294
+
295
+ A.heroHp = A.hp+ A.hpCount
296
+
297
+ hp.text = textStetus.format(" HP", A.heroHp, A.hpCount)
298
+
299
+ hp.invalidate()}
300
+
301
+
302
+
303
+ fun powManage(A:Hero){
304
+
305
+ A.heroPower = A.power+ A.powerCount
306
+
307
+ power.text = textStetus.format("ATK", A.heroPower, A.powerCount)}
308
+
309
+
310
+
311
+ fun heroMake(A: Hero, sum:Int, context:Context){
312
+
313
+ editForcus()
314
+
315
+ heroX.name=A.name
316
+
317
+
318
+
319
+ plusHp.setText(A.hpCount.toString())
320
+
321
+ plusPow.setText(A.powerCount.toString())
322
+
323
+
324
+
325
+ var hpCount=A.hpCount
326
+
327
+ var powCount=A.powerCount
328
+
329
+
330
+
331
+ var sumX = sum
332
+
333
+ sumCoun(sumX,0)
334
+
335
+ hpManage(A)
336
+
337
+ powManage(A)
338
+
339
+ //HP
340
+
341
+
342
+
343
+ plusHp.addTextChangedListener(object :TextWatcher{//入力中の問題が起きない。
344
+
345
+
346
+
347
+ override fun afterTextChanged(s: Editable?) {
348
+
349
+ val edit =s.toString()
350
+
351
+ if(heroX.name!=A.name){return}
352
+
353
+ if(!edit.equals("")&&edit.toInt() in 0..50){
354
+
355
+ val sa:Int = edit.toInt() - hpCount
356
+
357
+ if(sumX-sa in 0..300){
358
+
359
+ sumX = sumCoun(sumX,sa)
360
+
361
+ A.hpCount=edit.toInt()
362
+
363
+ hpManage(A)
364
+
365
+ hpCount=A.hpCount} }
366
+
367
+ } })
368
+
369
+
370
+
371
+
372
+
373
+ //Power
374
+
375
+ plusPow.addTextChangedListener(object :TextWatcher{//入力中の問題が起き、 viewもエンターを押さないと反映されない。
376
+
377
+ override fun afterTextChanged(s: Editable?) {
378
+
379
+ val edit =s.toString()
380
+
381
+ if(heroX.name!=A.name){return}
382
+
383
+ if(!edit.equals("")&&edit.toInt() in 0..50){
384
+
385
+ val sa:Int = edit.toInt() - powCount
386
+
387
+ if(sumX-sa in 0..300){
388
+
389
+
390
+
391
+ sumX = sumCoun(sumX,sa)
392
+
393
+ A.powerCount=edit.toInt()
394
+
395
+ powManage(A)
396
+
397
+ powCount=A.powerCount} }
398
+
399
+ )
400
+
401
+
402
+
403
+ }
404
+
405
+
406
+
407
+ fun editForcus(){
408
+
409
+ val list= listOf<EditText>(plusHp,plusPow)
410
+
411
+ list.forEach{
412
+
413
+ it.setOnFocusChangeListener { v, hasFocus ->
414
+
415
+ if (!hasFocus) {
416
+
417
+ val imm = activity?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
418
+
419
+ imm.hideSoftInputFromWindow(v.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
420
+
421
+ }
422
+
423
+ }}
424
+
425
+
426
+
427
+
428
+
429
+ heroImage?.setOnTouchListener { v, event ->
430
+
431
+ heroImage?.requestFocus()
432
+
433
+ mainLayout?.onTouchEvent(event) ?: true
434
+
435
+ }
436
+
437
+ }
438
+
439
+ }
440
+
441
+ ```
442
+
443
+ ```
444
+
445
+ package com.example.word_battle.online
446
+
447
+
448
+
449
+
450
+
451
+ class HeroMakerModeOnline: AppCompatActivity(){
452
+
453
+
454
+
455
+ private var A: Hero =
456
+
457
+ Hero()
458
+
459
+ private var B: Hero =
460
+
461
+ Hero()
462
+
463
+
464
+
465
+ private var sum: Int = 0
466
+
467
+
468
+
469
+ override fun onCreate(savedInstanceState: Bundle?) {
470
+
471
+ super.onCreate(savedInstanceState)
472
+
473
+ setContentView(R.layout.activity_hero_maker_mode)
474
+
475
+ val fragment = (maker as? MakedHeroA)!!
476
+
477
+ listButton = mutableListOf(button1,button2)
478
+
479
+
480
+
481
+ button1.setOnClickListener {
482
+
483
+ fragment?.heroMake(A, sum, this)
484
+
485
+ }
486
+
487
+ button2.setOnClickListener {
488
+
489
+ fragment?.heroMake(B, sum, this)
490
+
491
+ }}
492
+
493
+
494
+
495
+ override fun onTouchEvent(event: MotionEvent?): Boolean {
496
+
497
+ .requestFocus()
498
+
499
+ mainlayout.requestFocus()
500
+
501
+ return super.onTouchEvent(event)
502
+
503
+ }
504
+
505
+ }
506
+
507
+
508
+
509
+ ```
510
+
511
+ ```
512
+
513
+ <?xml version="1.0" encoding="utf-8"?>
514
+
515
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
516
+
517
+ xmlns:app="http://schemas.android.com/apk/res-auto"
518
+
519
+ xmlns:tools="http://schemas.android.com/tools"
520
+
521
+ android:id="@+id/mainlayout"
522
+
523
+ android:layout_width="match_parent"
524
+
525
+ android:layout_height="match_parent"
526
+
527
+ android:orientation="vertical"
528
+
47
529
  android:focusable="true"
48
530
 
49
531
  android:focusableInTouchMode="true"
50
532
 
51
- tools:context=".hero.MakingHero.MakedHeroA">
533
+ tools:context= ".hero.MakingHero.HeroMakerModeWhite">
52
534
 
53
535
 
54
536
 
55
537
  <LinearLayout
56
538
 
539
+ android:id="@+id/higherLayout"
540
+
57
541
  android:layout_width="match_parent"
58
542
 
59
543
  android:layout_height="0dp"
60
544
 
545
+ android:layout_weight="0"
546
+
547
+ android:orientation="horizontal"
548
+
549
+ />
550
+
551
+
552
+
553
+ <LinearLayout
554
+
555
+ android:id="@+id/centerLayout"
556
+
557
+ android:layout_width="match_parent"
558
+
559
+ android:layout_height="0dp"
560
+
61
- android:layout_weight="0.15"
561
+ android:layout_weight="0.08"
62
562
 
63
563
  android:orientation="horizontal">
64
564
 
65
565
 
66
566
 
67
- <Button
567
+ <ImageButton
68
-
568
+
69
- android:id="@+id/samCount"
569
+ android:id="@+id/button1"
570
+
571
+ style="@android:style/Widget.Button"
70
572
 
71
573
  android:layout_width="0dp"
72
574
 
73
- android:layout_height="match_parent"
575
+ android:layout_height="wrap_content"
576
+
74
-
577
+ android:layout_weight="1" />
578
+
579
+
580
+
581
+ <ImageButton
582
+
583
+ android:id="@+id/button2"
584
+
585
+ style="@android:style/Widget.Button"
586
+
75
- android:layout_weight="0.2"
587
+ android:layout_width="0dp"
76
-
588
+
77
- android:text="@string/samCount"
589
+ android:layout_height="wrap_content"
78
-
590
+
79
- android:textSize="30sp" />
591
+ android:layout_weight="1"/>
592
+
593
+
80
594
 
81
595
  </LinearLayout>
82
596
 
83
597
 
84
598
 
85
- <LinearLayout
86
-
87
- android:id="@+id/stetus"
88
-
89
- android:layout_width="0dp"
90
-
91
- android:layout_height="match_parent"
92
-
93
- android:layout_weight="0.6"
94
-
95
- android:orientation="vertical"
96
-
97
- android:visibility="visible">
98
-
99
-
100
-
101
-
102
-
103
-
104
-
105
- <TextView
599
+ <fragment
106
-
600
+
107
- android:id="@+id/hp"
601
+ android:id="@+id/maker"
108
-
602
+
109
- android:layout_width="match_parent"
603
+ android:layout_width="match_parent"
110
-
604
+
111
- android:layout_height="0dp"
605
+ android:layout_height="0dp"
112
-
113
- android:layout_weight="1"
606
+
114
-
115
- android:text="@string/HP"
116
-
117
- android:textAlignment="viewStart"
118
-
119
- android:textSize="30sp" />
120
-
121
-
122
-
123
- <TextView
124
-
125
- android:id="@+id/power"
126
-
127
- android:layout_width="match_parent"
128
-
129
- android:layout_height="0dp"
130
-
131
- android:layout_weight="1"
132
-
133
- android:text="@string/atk"
134
-
135
- android:textAlignment="viewStart"
136
-
137
- android:textSize="30sp" />
138
-
139
- </LinearLayout>
140
-
141
-
142
-
143
- <LinearLayout
144
-
145
- android:layout_width="0dp"
146
-
147
- android:layout_height="match_parent"
148
-
149
- android:layout_weight="0.2"
607
+ android:layout_weight="0.82"
150
-
608
+
151
- android:orientation="vertical">
609
+ android:orientation="horizontal"
152
-
153
-
154
-
155
- <EditText//入力内容が入力中に反映される
610
+
156
-
157
- android:id="@+id/plusHp"
158
-
159
- android:layout_width="match_parent"
160
-
161
- android:layout_height="0dp"
162
-
163
- android:layout_weight="1"
164
-
165
- android:gravity="bottom|center"
166
-
167
- android:hint="@string/count0_50"
611
+ android:name="com.example.word_battle.hero.MakingHero.MakedHeroA"
168
-
169
- android:inputType="number"
612
+
170
-
171
- android:lines="1"
172
-
173
- android:maxLength="2"
174
-
175
- android:nextFocusDown="@+id/def"
176
-
177
- android:nextFocusForward="@+id/def" />
613
+ tools:layout="@layout/fragment_maked_hero" />
178
-
179
-
180
-
181
- <EditText//エンターを押すまで入力内容が表示されない
182
-
183
- android:id="@+id/plusPow"
184
-
185
- android:layout_width="match_parent"
186
-
187
- android:layout_height="0dp"
188
-
189
- android:layout_weight="1"
190
-
191
- android:gravity="bottom|center"
192
-
193
- android:hint="@string/count0_50"
194
-
195
- android:inputType="number"
196
-
197
- android:lines="1"
198
-
199
- android:maxLength="2"
200
-
201
- android:nextFocusDown="@+id/def"
202
-
203
- android:nextFocusForward="@+id/def" />
204
-
205
- </LinearLayout>
206
614
 
207
615
  </LinearLayout>
208
616
 
209
-
210
-
211
- メインアクティビティのコード
212
-
213
- class HeroMakerModeOnline: AppCompatActivity(){
214
-
215
- private var A: Hero =
216
-
217
- Hero(name = "A", job = "swoad",teamColor = "normal")
218
-
219
- private var sum: Int = 0
220
-
221
- override fun onCreate(savedInstanceState: Bundle?) {
222
-
223
- super.onCreate(savedInstanceState)
224
-
225
- fragment = (maker as? MakedHeroA)!!
226
-
227
- fragment?.heroMake(A, sum, this)
228
-
229
- }
230
-
231
- }
232
-
233
-
234
-
235
- フラグメントのソースコード
236
-
237
- class MakedHeroA: Fragment(),TextWatcher {
238
-
239
- fun heroMake(A: Hero, sum:Int, context:Context){
240
-
241
- var sumX = sum
242
-
243
- var hpCount=A.hpCount
244
-
245
- var powCount=A.powerCount
246
-
247
-
248
-
249
- //↓のは全て反映され、入力欄の問題も起こらない
250
-
251
- plusHp.addTextChangedListener(object :TextWatcher{
252
-
253
- var beforeX: CharSequence? = null
254
-
255
- override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {beforeX = s }
256
-
257
- override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { if(beforeX.toString()==s.toString()||s==""){return} }
258
-
259
- override fun afterTextChanged(s: Editable?) {
260
-
261
- val edit =s.toString()
262
-
263
-
264
-
265
- if(!edit.equals("")&&edit.toInt() in 0..50){
266
-
267
- val sa:Int = edit.toInt() - hpCount
268
-
269
- if(sumX-sa in 0..300){
270
-
271
- sumX = sumCoun(sumX,sa) 
272
-
273
- A.hpCount=edit.toInt()
274
-
275
- hpManage(A)
276
-
277
- } }} })
278
-
279
-
280
-
281
- //下のは一部のみ動き、入力欄は固定のまま。
282
-
283
- plusPow.addTextChangedListener(object :TextWatcher{
284
-
285
- var beforeX: CharSequence? = null
286
-
287
- override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { beforeX = s }
288
-
289
- override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { if(beforeX.toString()==s.toString()||s==""){return} }
290
-
291
- override fun afterTextChanged(s: Editable?) {
292
-
293
- val edit =s.toString()
294
-
295
-
296
-
297
- if(!edit.equals("")&&edit.toInt() in 0..50){
298
-
299
- val sa:Int = edit.toInt() - powCount
300
-
301
- if(sumX-sa in 0..300){
302
-
303
- sumX = sumCoun(sumX,sa)//入力中もVIewに反映あり
304
-
305
- A.powerCount=edit.toInt()
306
-
307
- powManage(A)//入力中はViewに反映しない
308
-
309
- } }} })
310
-
311
- }
312
-
313
-
314
-
315
- fun sumCoun(sum:Int,count:Int):Int{//入力中もVIewに反映あり
316
-
317
- var sumX :Int = sum.minus(count)
318
-
319
- samCount.text="$sumX"
320
-
321
- samCount.invalidate()
322
-
323
- return sumX
324
-
325
- }
326
-
327
- val textStetus = "%3s:%03d..+:%02d"
328
-
329
- fun hpManage(A:Hero){//入力中もVIewに反映あり
330
-
331
- val rialhp: Int = A.hp
332
-
333
- val playHp: Int = A.hpCount
334
-
335
-
336
-
337
- A.heroHp = rialhp + playHp
338
-
339
- hp.text = textStetus.format(" HP", A.heroHp, A.hpCount)}
340
-
341
-
342
-
343
- fun powManage(A:Hero){//入力中はViewに反映しない
344
-
345
- val rialPower: Int = A.power
346
-
347
- val playPower: Int = A.powerCount
348
-
349
- A.heroPower = rialPower + playPower
350
-
351
-
352
-
353
- power.text = textStetus.format("ATK", A.heroPower, A.powerCount)}
354
-
355
- }
356
-
357
- kotilin
358
-
359
- ```
617
+ ```
360
-
361
-
362
-
618
+
619
+
620
+
363
- ### 試したこと
621
+ ### 補足情報
364
-
365
- EditTextのnextforcus等を改変したが、入力欄変わらず。
366
-
367
- また他のViewをタッチすることでキーボードを非表示にするコードを追加、削除、追加で試行したが、変わらず。
368
-
369
- 画面サイズの影響も考え、エミュレーターのタブレットでアプリを実施。API28では同じ結果だったが、API25だと入力欄の反映が正常に起こったため、画面サイズの影響はないと考えた。
370
-
371
- APIにおけるEditTextの変化について調べたが、フォーカスのことしか情報が出てこなかった。
372
-
373
-
374
-
375
-
376
-
377
- ### 補足情報(FW/ツールのバージョンなど)
378
622
 
379
623
  androidstudio3.6.1
380
624
 
381
625
  エミュレーター:ターゲットAndroid9.0,API28
382
626
 
383
- ソースコードは EditTextが関係しているものだけを抜粋しました。
384
-
385
- 他のコードも必要があれば貼ります。
386
-
387
627
  よろしくお願いします。