Android 在if块中使用手动创建的id而不是系统id
TLDR:Android 在if块中使用手动创建的id而不是系统id,android,contextmenu,Android,Contextmenu,TLDR: /** * Opens the context menu(s) */ @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); if(v.getId
/**
* Opens the context menu(s)
*/
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
if(v.getId() == 2131427332)
{
inflater.inflate(R.menu.share_menu, menu);
}
else if(v.getId() == 2131427329)
{
inflater.inflate(R.menu.options_menu, menu);
}
}
我更愿意使用'2131427332'的'shareButton'图标来指出现onCreateContextMenu()
的点击项目。我该怎么做
说明:
/**
* Opens the context menu(s)
*/
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
if(v.getId() == 2131427332)
{
inflater.inflate(R.menu.share_menu, menu);
}
else if(v.getId() == 2131427329)
{
inflater.inflate(R.menu.options_menu, menu);
}
}
我有一个带有两个上下文菜单的活动。因此,在我的onCreateContextMenu()
方法中,我检索单击的项目的id,并放大相应的菜单
但是-我知道的唯一方法是使用v.getId()代码>-这看起来很糟糕/奇怪,因为我在if块中使用的是系统生成的id,而不是我自己创建的id。有更好的方法吗?我会改变吗?我可以使用XML项的id而不是自动生成的id吗
代码:
/**
* Opens the context menu(s)
*/
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
if(v.getId() == 2131427332)
{
inflater.inflate(R.menu.share_menu, menu);
}
else if(v.getId() == 2131427329)
{
inflater.inflate(R.menu.options_menu, menu);
}
}
您可以使用您的ID引用自动生成的R.class
例如:
if(v.getId() == R.id.my_custom_id)
{
}
正如我记得不久前R.class中的id是静态的final,但google团队将其更改为仅静态的,所以现在您不能在switch语句中使用它们,但可以在代码中随意使用它们
找到了!这里有更多信息:因此您有一个名为shareButton的视图
您需要做的是替换此:
if(v.getId() == 2131427332) {
inflater.inflate(R.menu.share_menu, menu);
}
为此:
if(v.equals(shareButton)) {
inflater.inflate(R.menu.share_menu, menu);
}
就这么简单 我认为我的minsdkversion8可以做到这一点,所以我只能在switch语句中使用整数,对吗?@Dave switch和if都可以工作,它与API级别无关。库项目只有一个问题:@brillenheini-awesome ty-将其更改为switch语句,效果非常好!