回答編集履歴

4

コメントへの回答追記

2020/12/14 12:55

投稿

razuma
razuma

スコア1313

test CHANGED
@@ -239,3 +239,179 @@
239
239
 
240
240
 
241
241
  以上、よろしくお願いいたします。
242
+
243
+
244
+
245
+ === コメントに対する追記
246
+
247
+ stopボタンを押したときのエラーに関しては現状のコードだとMediaPlayerが作られていないので落ちてしまいます。startボタンを押した後にstopボタンを押すとエラーが出なくなると思います。
248
+
249
+ コードの修正としてはreleaseした後にnullを入れてnullのときはstopが押せないようにしておくと、とりあえずエラーで落ちることはなくなると思います。
250
+
251
+
252
+
253
+ stopボタンだけが表示されている件に関しては単純にレイアウトが指定されていないだけです。
254
+
255
+ layout_editor_absoluteXはデザイナー画面で表示されるだけで実際にはレイアウトされないようです(使ったことないので知りませんでした)
256
+
257
+ レイアウトに関しては今回のエラーとは直接関係ないので、とりあえず真ん中にボタンが表示されるレイアウトを示します。レイアウトの仕方についてはどのようにレイアウトしたいかがあるかと思いますので調べてみてください。
258
+
259
+
260
+
261
+ 以下に、動かしたときのサンプルコードをおいておきますので適宜読み替えながら修正してみてください。(ちょっと回答が長くなってきたのでまだ修正がありそうでしたら、回答を分けようと思います。)
262
+
263
+
264
+
265
+ ```
266
+
267
+ class MainActivity : AppCompatActivity() {
268
+
269
+
270
+
271
+ private var mediaPlayer: MediaPlayer? = null
272
+
273
+
274
+
275
+ override fun onCreate(savedInstanceState: Bundle?) {
276
+
277
+ super.onCreate(savedInstanceState)
278
+
279
+ setContentView(R.layout.activity_main)
280
+
281
+
282
+
283
+ // Button for start music
284
+
285
+ val buttonStart: Button = findViewById(R.id.start)
286
+
287
+
288
+
289
+ // Resister listener
290
+
291
+ buttonStart.setOnClickListener {
292
+
293
+ startMusic()
294
+
295
+ }
296
+
297
+
298
+
299
+ // Button for stop music
300
+
301
+ val buttonStop: Button = findViewById(R.id.stop)
302
+
303
+
304
+
305
+ // Resister listener
306
+
307
+ buttonStop.setOnClickListener {
308
+
309
+ stopMusic()
310
+
311
+ }
312
+
313
+
314
+
315
+ }
316
+
317
+
318
+
319
+ fun startMusic() {
320
+
321
+ mediaPlayer = MediaPlayer.create(this, R.raw.test)
322
+
323
+ mediaPlayer?.isLooping = true
324
+
325
+ mediaPlayer?.start()
326
+
327
+ }
328
+
329
+
330
+
331
+ fun stopMusic() {
332
+
333
+ if(mediaPlayer == null){
334
+
335
+ return
336
+
337
+ }
338
+
339
+
340
+
341
+ mediaPlayer?.stop()
342
+
343
+ mediaPlayer?.reset()
344
+
345
+ mediaPlayer?.release()
346
+
347
+ mediaPlayer = null
348
+
349
+ }
350
+
351
+ }
352
+
353
+ ```
354
+
355
+
356
+
357
+ ```
358
+
359
+ <?xml version="1.0" encoding="utf-8"?>
360
+
361
+ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
362
+
363
+ xmlns:app="http://schemas.android.com/apk/res-auto"
364
+
365
+ xmlns:tools="http://schemas.android.com/tools"
366
+
367
+ android:layout_width="match_parent"
368
+
369
+ android:layout_height="match_parent"
370
+
371
+ tools:context=".MainActivity">
372
+
373
+
374
+
375
+ <Button
376
+
377
+ android:id="@+id/start"
378
+
379
+ android:layout_width="wrap_content"
380
+
381
+ android:layout_height="wrap_content"
382
+
383
+ android:text="start"
384
+
385
+ app:layout_constraintBottom_toBottomOf="parent"
386
+
387
+ app:layout_constraintLeft_toLeftOf="parent"
388
+
389
+ app:layout_constraintRight_toRightOf="parent"
390
+
391
+ app:layout_constraintTop_toTopOf="parent" />
392
+
393
+
394
+
395
+ <Button
396
+
397
+ android:id="@+id/stop"
398
+
399
+ android:layout_width="wrap_content"
400
+
401
+ android:layout_height="wrap_content"
402
+
403
+ android:text="stop"
404
+
405
+ app:layout_constraintTop_toBottomOf="@+id/start"
406
+
407
+ app:layout_constraintLeft_toLeftOf="parent"
408
+
409
+ app:layout_constraintRight_toRightOf="parent"
410
+
411
+ />
412
+
413
+
414
+
415
+ </androidx.constraintlayout.widget.ConstraintLayout>
416
+
417
+ ```

3

コメントへの回答追記

2020/12/14 12:55

投稿

razuma
razuma

スコア1313

test CHANGED
@@ -131,3 +131,111 @@
131
131
 
132
132
 
133
133
  以上、よろしくお願いいたします。
134
+
135
+
136
+
137
+ === コメントに対する追記
138
+
139
+ `findViewById(R.id.start_music)`、これは読み込んでいるレイアウトからIDを拾ってくるので`activity_main.xml`にstart_musicと言うIDがないとnullで落ちてしまいます。なので
140
+
141
+
142
+
143
+ xmlの方にidを合わせるのであれば
144
+
145
+ ```
146
+
147
+ // Button for start music
148
+
149
+ val buttonStart: Button = findViewById(R.id.button)
150
+
151
+
152
+
153
+ // Resister listener
154
+
155
+ buttonStart.setOnClickListener {
156
+
157
+ startMusic()
158
+
159
+ }
160
+
161
+
162
+
163
+ // Button for stop music
164
+
165
+ val buttonStop: Button = findViewById(R.id.button2)
166
+
167
+
168
+
169
+ // Resister listener
170
+
171
+ buttonStop.setOnClickListener {
172
+
173
+ stopMusic()
174
+
175
+ }
176
+
177
+ ```
178
+
179
+
180
+
181
+ とするか、もしくはxmlを修正するのであれば
182
+
183
+ ```
184
+
185
+ <?xml version="1.0" encoding="utf-8"?>
186
+
187
+ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
188
+
189
+ xmlns:app="http://schemas.android.com/apk/res-auto"
190
+
191
+ xmlns:tools="http://schemas.android.com/tools"
192
+
193
+ android:layout_width="match_parent"
194
+
195
+ android:layout_height="match_parent"
196
+
197
+ tools:context=".MainActivity">
198
+
199
+
200
+
201
+ <Button
202
+
203
+ android:id="@+id/start_music"
204
+
205
+ android:layout_width="wrap_content"
206
+
207
+ android:layout_height="wrap_content"
208
+
209
+ android:text="@string/start"
210
+
211
+ tools:layout_editor_absoluteX="143dp"
212
+
213
+ tools:layout_editor_absoluteY="119dp" />
214
+
215
+
216
+
217
+ <Button
218
+
219
+ android:id="@+id/stop_music"
220
+
221
+ android:layout_width="wrap_content"
222
+
223
+ android:layout_height="wrap_content"
224
+
225
+ android:text="@string/stop"
226
+
227
+ tools:layout_editor_absoluteX="138dp"
228
+
229
+ tools:layout_editor_absoluteY="363dp" />
230
+
231
+ </androidx.constraintlayout.widget.ConstraintLayout>
232
+
233
+ ```
234
+
235
+
236
+
237
+ のどちらかの修正を行うと起動すると思います。(どちらを修正するかはお好みで)
238
+
239
+
240
+
241
+ 以上、よろしくお願いいたします。

2

コメントへの回答追記

2020/12/14 11:59

投稿

razuma
razuma

スコア1313

test CHANGED
@@ -111,3 +111,23 @@
111
111
  以下はLogcat Errorの表示場所です。
112
112
 
113
113
  ![イメージ説明](fa324881602a5db969d7a1c94b30e3af.png)
114
+
115
+
116
+
117
+ === コメントに対する追記
118
+
119
+ MainActivity.ktの19行目でエラーが発生しており、findVieewById(R.id.start_music)が見つからなくてエラーが発生しています。
120
+
121
+ Logcatの青い部分を押すと該当行に飛びます。
122
+
123
+
124
+
125
+ activity_main.xmlにstart_musicが無いのかもしれません?
126
+
127
+ そこの部分が落ちないようになれば起動するかと思います。
128
+
129
+ エラーの修正方法がわからないようであればactivity_main.xmlの内容を記載していただけますでしょうか。
130
+
131
+
132
+
133
+ 以上、よろしくお願いいたします。

1

コメントへの回答追記

2020/12/14 11:29

投稿

razuma
razuma

スコア1313

test CHANGED
@@ -102,4 +102,12 @@
102
102
 
103
103
 
104
104
 
105
+ === コメントに対する追記
106
+
107
+ アプリが落ちているのであればエラー情報がLogcatに出ていると思いますので、エラーログの情報をお願いいたします。
108
+
109
+
110
+
105
- 上、よろしくお願いいたします。
111
+ 下はLogcat Errorの表示場所です。
112
+
113
+ ![イメージ説明](fa324881602a5db969d7a1c94b30e3af.png)