TLDR:
当引用点击的项目onCreateContextMenu()
时,我宁愿使用'shareButton'intead of'2131427332'。我怎么能这样做?
解释
我有一个带有两个上下文菜单的活动。因此,在我的onCreateContextMenu()
方法中,我正在检索点击项目的ID,并对相应的菜单进行充气。
但是 - 我知道怎么做的唯一方法是使用v.getId();
- 这看起来很糟糕/奇怪,因为我在if块中使用系统生成的id而不是我自己创建的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);
}
}
答案 0 :(得分:3)
您可以使用您的ID引用自动生成的R.class
例如:
if(v.getId() == R.id.my_custom_id)
{
}
正如我记得前一段时间R.class中的ID是静态最终版,但谷歌团队将其更改为静态,所以现在你不能在switch语句中使用它们,但可以随意在代码中使用它们。
发现它!更多相关信息:http://tools.android.com/tips/non-constant-fields答案 1 :(得分:0)
所以你有一个名为shareButton的视图。
你需要做的就是替换它:
if(v.getId() == 2131427332) {
inflater.inflate(R.menu.share_menu, menu);
}
用这个:
if(v.equals(shareButton)) {
inflater.inflate(R.menu.share_menu, menu);
}
这很简单!