2017-02-26 3 views
0

내 코드에서 MediaPlayer 플러그인을 사용하고 에뮬레이터 또는 Android 장치에 배포하면 빌드가 오류없이 완료되지만 장치가 시작될 때 응용 프로그램이 충돌합니다.애플 리케이션을 중단시키는 MediaPlayer 플러그인

자바 : MainActivity.java

package com.oniichan.launchpadify; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.media.MediaPlayer; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    final MediaPlayer mp = MediaPlayer.create(this, R.raw.clap1); 

    public void clapone(View v){ 
     Toast.makeText(this, "Playing clap1.wav", Toast.LENGTH_SHORT).show(); 
     mp.start(); 
    } 
} 

XML : activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.oniichan.launchpadify.MainActivity"> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true"> 

     <Button 
      android:layout_width="150px" 
      android:layout_height="150px" 
      android:layout_margin="10dp" 
      android:id="@+id/play1" 
      android:onClick="clapone" 
      /> 

    </FrameLayout> 
</RelativeLayout> 

문제가있는 줄은

final MediaPlayer mp = MediaPlayer.create(this, R.raw.clap1); 
입니다

위의 줄을 프로그램에서 주석 처리하면 모든 것이 잘 작동하는 것 같습니다. 내가 좋은 일이 일어날 것을 예상하여 위의 줄을 주석 처리하지 않으면 앱이 다운됩니다. pastebin.com/NGrqTmAf

+0

는, 예 왼쪽 상단 모서리에있는 사각형 버튼이다 소리를 내기 위해 사용하고 있습니다. – Shanu

+0

Logcat (Android 모니터)에 충돌 보고서가 있어야합니다. – 0X0nosugar

답변

0

이 줄

최종 MediaPlayer를 : 여기에

Application Layout in Android Studio

Application Crash on Emulator

내가 조회 여기 페이스트 빈에 충돌 로그를 넣어 청결하게 유지하려면 응용 프로그램의 스크린 샷입니다 mp = MediaPlayer.create (this, R.raw.clap1);

은 활동이 완전히 인스턴스화되기 전에 실행되므로 this은 아직 존재하지 않습니다.

당신은 멤버 변수로 MediaPlayer이있는 final을 떠나고 싶어하고 이런 식으로 할 경우 : 당신이 궁금해하는 경우

public class MainActivity extends AppCompatActivity { 

    private MediaPlayer mp; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mp = MediaPlayer.create(this, R.raw.clap1); 
    } 

    // other code here... 
} 
+0

꽤 잘 돌아갔습니다. 너 락! – Shanu

관련 문제