Button.setOnClickListener((OnClickListener) this) 崩潰,因 Click 類未實現 OnClickListener 接口,強轉失敗。需 implements OnClickListener 並實現 onClick 方法。
public class Click extends Activity { // ❌ 未實現接口
// ...
button1.setOnClickListener((OnClickListener) this); // ClassCastException
}
public class Click extends Activity implements View.OnClickListener { // ✅ 實現接口
MediaPlayer mp1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_click);
mp1 = MediaPlayer.create(this, R.raw.sound1);
Button button1 = findViewById(R.id.button1);
button1.setOnClickListener(this); // ✅ 直接傳 this
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.button1) {
mp1.start();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mp1 != null) {
mp1.release(); // 釋放資源
mp1 = null;
}
}
}
implements View.OnClickListener 而非 OnClickListener(需導包或全限定名)。setOnClickListener(this) 無需強轉。MediaPlayer 用完必須 release(),建議在 onDestroy 中釋放。實現接口並正確綁定,按鈕播放聲音不再崩潰。