Android onContextItemSelected错误
我在android应用程序中实现上下文菜单时遇到了一些困难。我的第一个问题是,我试图在OnCreate内部实现OnCreateContextMenu,但我不断收到一个错误,错误是: void是变量onCreateContextMenu的无效类型 我通过将Android onContextItemSelected错误,android,Android,我在android应用程序中实现上下文菜单时遇到了一些困难。我的第一个问题是,我试图在OnCreate内部实现OnCreateContextMenu,但我不断收到一个错误,错误是: void是变量onCreateContextMenu的无效类型 我通过将onCreateContextMenu放在OnCreate之外解决了这个问题。现在我的问题在于OnContextItemSelected。我的错误出现在以下行:public boolean onContextItemSelected(菜单项菜单)
onCreateContextMenu
放在OnCreate之外解决了这个问题。现在我的问题在于OnContextItemSelected
。我的错误出现在以下行:public boolean onContextItemSelected(菜单项菜单)
。错误是:
- 实现android.view.view.OnLongClickListener.onLongClick
- 语法错误,请插入“}”以完成MethodBody
BaconStripsButton.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
boolean onContextItemSelected(MenuItem item)
{
if (item.itemId() = 0)
{
Toast ringtone = Toast.makeText(startingPoint.this, "Ringtone added Successfully!", Toast.LENGTH_SHORT);
return true;
}
return false;
}
}
});
任何帮助都将不胜感激。谢谢,Justin您可以使用ListView并在活动的OnCreate中实现onCreateContextMenu 像这样: myList.setOnCreateContextMenuListener(新的OnCreateContextMenuListener(){
无需在onlongClick of按钮内使用onContextItemSelected。只需覆盖onContextItemSelected();并将ContextMenu注册到btn。无需设置OnLongClickListener
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
然后覆盖
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.edit:
editNote(info.id);
return true;
case R.id.delete:
deleteNote(info.id);
return true;
default:
return super.onContextItemSelected(item);
}
}
最后是registerContextMenu(按钮)是的,谢谢您的帮助。不过还有一个问题:我正在制作一个soundboard应用程序,我想知道如何处理“onContextItemSelected”中的每个按钮。根据长按哪个按钮,将确定哪个mp3将添加为铃声。您可以使用这些项目的id作为使用开关盒来确定哪个项目选择了上下文菜单的选项否我正在尝试确定长时间按下哪个was按钮以显示上下文菜单。请就此问题询问另一个问题。因为这完全不同
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.edit:
editNote(info.id);
return true;
case R.id.delete:
deleteNote(info.id);
return true;
default:
return super.onContextItemSelected(item);
}