java - 创建带有 for 循环问题的动态按钮(Android、JAVA)
问题描述
我正在尝试创建代码,根据在单独的 android studio 活动中创建的 wav 文件的数量动态创建不同的媒体播放器按钮。
每个 wav 文件都使用以下文件路径保存
/data/data/com.example.androidaudiorecorder/files/event1.wav
/data/data/com.example.androidaudiorecorder/files/event2.wav
/data/data/com.example.androidaudiorecorder/files/event3.wav
这是创建按钮并将它们放入数组的代码:
Button[] buttonsPlay = new Button[data];
for (int loop = 0; loop < data ; loop++) {
playID ++;
Button button = new Button(this);
button.setId(playID);
button.setText("Play event "+playID);
String buttonName = "PlayEvent" + playID;
button.setLayoutParams(new LinearLayout.LayoutParams(500, 50));
LinearLayout.LayoutParams ll = (LinearLayout.LayoutParams)button.getLayoutParams();
ll.gravity = Gravity.CENTER;
button.setLayoutParams(ll);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
button.setLayoutParams(params);
buttonsPlay[loop] = button;
}
创建每个按钮后,我想遍历数组中的所有按钮并播放相应的 wav 文件。
这是我迄今为止的尝试
playID = 0;
for (int loop = 0 ; loop < buttonsPlay.length ; loop ++){
playID++;
Toast.makeText( ctx, "play is " + playID , Toast.LENGTH_SHORT).show();
buttonsPlay[loop] = (Button) findViewById( buttonsPlay[loop].getId());
buttonsPlay[loop].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String dataSource = "/data/data/com.example.androidaudiorecorder/files/event"+ playID +".wav";
playEvent( dataSource);
}
});
不幸的是,每次我播放 wav 时,它只会播放最后创建的 wav 事件。
例如,如果有 10 个 wav 文件,则按下的每个按钮都会播放:
“/data/data/com.example.androidaudiorecorder/files/event10.wav”
如果有人对如何纠正此问题有任何建议,我将不胜感激。
解决方案
推荐阅读
- powershell - Visual Studio PowerShell 使列表框拖放文件可用
- java - 需要使用 Mat.random 生成随机数并使用该数字在 Java 中使用线程查找阶乘
- json - 如何使用 PowerShell 将新的 JsonArray 属性添加到现有的 Json 属性
- php - DocuSign\eSign\Model\RecipientViewRequest 上的错误 SHARED_VIEW_USER_LACKS_PERMISSION
- tfs - 如何搜索仍在细化中的 TFS 项目?
- python - Qt 无法使用 tox 连接到虚拟帧缓冲区
- html - HTML 上的 POST 请求
- terraform - Terrafrom | 变量 | bash 脚本的输入
- c# - 带有布尔异步调用的 EF Core 3.1 客户端评估问题
- javascript - 405 方法不允许在 laravel 应用程序中进行 POST 和 PUT