初学者 - 不同按钮的上下文菜单不同功能
Beginner - Context Menu different function for different Buttons
因为我是 Java 和 Android Studio 的新手,所以我正在开发一个小应用程序 Soundboard。所以直到现在我用 2 个按钮数组和 Sounds.mp3
数组编写了一个音板
现在我正在构建一个上下文菜单,它也运行良好,但直到现在我的问题是应用程序正在为每个按钮执行与上下文菜单相同的 "function"。但是每个按钮都有不同的声音我怎么才能让它工作它也像Array/Button一样工作每个按钮都有不同的声音文件
public int[] buttonsas = {button1, R.id.button2, R.id.button3};
public int[] sounds = {R.raw.sound1, R.raw.sound2, R.raw.sound3};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int i = 0; i < buttonsas.length; i++) {
Button contextMenuButton = (Button) findViewById(buttonsas[i]);
registerForContextMenu(contextMenuButton);
}
MainMedia = MediaPlayer.create(this, R.raw.sound1);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Context Menu");
menu.add(0, v.getId(), 0, "Action 1");
menu.add(0, v.getId(), 0, "Action 2");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getTitle().equals("Action 1")){function1(item.getItemId());}
else if(item.getTitle().equals("Action 2")) {function2(item.getItemId());}
else {return false;}
return true;
}
public void function1(int id){
Toast.makeText(this, "function 1 called", Toast.LENGTH_SHORT).show();
}
public void function2(int id){
Toast.makeText(this, "function 2 called", Toast.LENGTH_SHORT).show();
}
尝试以下代码,如果您觉得有困难,请发表评论
//replace following in your onCreate method
for (int i = 0; i < buttonsas.length; i++) {
Button contextMenuButton = (Button) findViewById(buttonsas[i]);
contextMenuButton.setText("Action "+i);
registerForContextMenu(contextMenuButton);
}
和
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Context Menu");
Button buttonView = (Button) v;
menu.add(0, buttonView .getId(), 0, buttonView.getText());
}
`
因为我是 Java 和 Android Studio 的新手,所以我正在开发一个小应用程序 Soundboard。所以直到现在我用 2 个按钮数组和 Sounds.mp3
数组编写了一个音板现在我正在构建一个上下文菜单,它也运行良好,但直到现在我的问题是应用程序正在为每个按钮执行与上下文菜单相同的 "function"。但是每个按钮都有不同的声音我怎么才能让它工作它也像Array/Button一样工作每个按钮都有不同的声音文件
public int[] buttonsas = {button1, R.id.button2, R.id.button3};
public int[] sounds = {R.raw.sound1, R.raw.sound2, R.raw.sound3};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int i = 0; i < buttonsas.length; i++) {
Button contextMenuButton = (Button) findViewById(buttonsas[i]);
registerForContextMenu(contextMenuButton);
}
MainMedia = MediaPlayer.create(this, R.raw.sound1);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Context Menu");
menu.add(0, v.getId(), 0, "Action 1");
menu.add(0, v.getId(), 0, "Action 2");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getTitle().equals("Action 1")){function1(item.getItemId());}
else if(item.getTitle().equals("Action 2")) {function2(item.getItemId());}
else {return false;}
return true;
}
public void function1(int id){
Toast.makeText(this, "function 1 called", Toast.LENGTH_SHORT).show();
}
public void function2(int id){
Toast.makeText(this, "function 2 called", Toast.LENGTH_SHORT).show();
}
尝试以下代码,如果您觉得有困难,请发表评论
//replace following in your onCreate method
for (int i = 0; i < buttonsas.length; i++) {
Button contextMenuButton = (Button) findViewById(buttonsas[i]);
contextMenuButton.setText("Action "+i);
registerForContextMenu(contextMenuButton);
}
和
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Context Menu");
Button buttonView = (Button) v;
menu.add(0, buttonView .getId(), 0, buttonView.getText());
}
`