2017-06-01 71 views
1

我想按下一個圖像按鈕,它應該播放原始的MP3文件。在片段中播放聲音

這裏是我的代碼和錯誤在裏面 -

public class Fragment_food_apple extends Fragment{ 

    MediaPlayer MediaPlayer; 
    ImageButton btn; 
    public Fragment_food_apple() { 

    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     final MediaPlayer mp = MediaPlayer.create (this, R.raw.apple); 
     //////problem is in up line and it is under this, 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       mp.start(); 
      } 
     }); 

    }; 
+1

顯示堆棧跟蹤 –

回答

0

方法MediaPlayer.onCreate()需要Context類的對象作爲第一個參數,你逝去的片段(不子上下文)給它。

改爲使用getActivity().getApplicationContext()

希望這可以幫助你,評論如果你有任何問題。

1

我不確定我是否錯過了一些東西,但是在這裏你走了。如果你有任何錯誤,請讓我知道。

MediaPlayer mp; 
ImageButton btn; 
public Fragment_food_apple() { 
} 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //Inflate 
    View view = inflater.inflate(R.layout.fragment_timer, container, false); 

    //Find media player 
    mp = MediaPlayer.create (getContext(), R.raw.apple); 

    //Find your button 
    btn = (Button) view.findViewById(R.id.YOUR_BUTTON);  

    btn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     mp.start(); 
    } 
}); 


}; 
+0

片段沒有'的getContext()'直到23 API(我不知道有關程序兼容性的支持,雖然),所以你可能不應該使用它,除非你真的想要的目標只有API 23+設備 – Markaos

+0

謝謝你的幫助,現在的問題是,充氣器和容器都是紅色的(???)你能幫助我嗎? – ali

+0

哦,在inflater而不是'fragment_timer'中使用你自己的片段類。忘了改變。 – Zeo