java - 在Android中添加按钮声音

标签 java android

我一直在尝试在我的 Android 应用程序中添加按钮声音。除了 OnClick 方法与 OnClickListener 分离的 Activity 之外,它们在所有 Activity 中都运行良好:

package com.example.quizdladzieci;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class ActivityChose extends AppCompatActivity implements View.OnClickListener{
 public static final String EXTRA_NUMBER = "com.example.application.example.EXTRA_NUMBER";
 private Button buttonAdd;
 private Button buttonMinus;
 private Button buttonMultiple;
 private Button buttonDivide;
 private Button buttonDivide2;
 public int no;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_chose);

     buttonAdd = (Button) findViewById(R.id.buttonAdd);
     buttonMinus = (Button) findViewById(R.id.buttonMinus);
     buttonMultiple = (Button) findViewById(R.id.buttonMultiple);
     buttonDivide = (Button) findViewById(R.id.buttonDivide);
     buttonDivide2 = (Button) findViewById(R.id.buttonDivide2);
     final MediaPlayer mp = MediaPlayer.create(this, R.raw.sample);

     buttonAdd.setOnClickListener(this);
     buttonMinus.setOnClickListener(this);
     buttonMultiple.setOnClickListener(this);
     buttonDivide.setOnClickListener(this);
     buttonDivide2.setOnClickListener(this);



 }


 public void openActivity() {
     Intent intent;
     if(no == 1 || no == 2){
         intent = new Intent(this, CalculatorActivity.class);
         intent.putExtra(EXTRA_NUMBER, no);
         startActivity(intent);
     } else if(no == 3){
         intent = new Intent(this, ActivityMultiple.class);
         intent.putExtra(EXTRA_NUMBER, no);
         startActivity(intent);
     } else if(no == 4){
         intent = new Intent(this, ActivityDivide.class);
         intent.putExtra(EXTRA_NUMBER, no);
         startActivity(intent);
     } else if(no == 5){
        /* intent = new Intent(this, ActivityDivide2.class);
         startActivity(intent);*/
     }
 }

 @Override
 public void onClick(View v) {
     switch(v.getId()) {
         case R.id.buttonAdd:
             no = 1;
             openActivity();
             break;
         case R.id.buttonMinus:
             no = 2;
             openActivity();
             break;
         case R.id.buttonMultiple:
             no = 3;
             openActivity();
             break;
         case R.id.buttonDivide:
             no = 4;
             openActivity();
             break;
         case R.id.buttonDivide2:
             no = 5;
             openActivity();
             break;
     }
 }
}

这是我放入 OnCreate 方法中的 mediaPlayer 行:

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

为了使按钮声音正常工作,我添加了以下行:

mp.start();

在通常放置在 OnClickListener 内部的 OnClick 方法中,但在这种特定情况下它不起作用,正如您在第一个代码示例中看到的那样。您能告诉我如何在不删除 case 方法的情况下重新组织代码以正确放置 mp.start();那么按钮声音可以正常工作吗?预先感谢您!

最佳答案

 MediaPlayer mp;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
      mp = MediaPlayer.create(this, R.raw.sample);
 }

put mp.start();在您的 onclick() 方法中并确保原始文件夹包含示例文件。

关于java - 在Android中添加按钮声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61384872/

相关文章:

Android PayPal SDK 和 fragment

android - 如何在 Retrofit2 converter-simplexml 中调试 "java.lang.IllegalArgumentException: Unable to create converter for java.util.List"?

java - 如何在 Kapt3 中使用 lombok

java - 如何使一个微调器填充另一个微调器?

java - 在 arrayList 中搜索对象,然后多次向同一对象添加值

java - 从 Firebase 获得双倍

android - 无需 Asset Manager 和复制,直接在 C++ 中访问 Android APK Asset 数据

Javascript 不适用于 FireFox for Android,仅适用于我的网站

java - 我可以拥有超过 1 个 'mongos' 实例吗?

java - 通过 http 请求以字节形式发送 java 对象 : is BASE64 necessary?