gpt4 book ai didi

android - 在 if block 中使用手动创建的 id 而不是系统 id

转载 作者:行者123 更新时间:2023-11-29 18:05:10 24 4
gpt4 key购买 nike

TLDR:

当提到点击的项目时,我宁愿使用 'shareButton' 而不是 '2131427332' 来显示 onCreateContextMenu()。我该怎么做?

解释:

我有一个带有两个上下文菜单的 Activity 。因此,在我的 onCreateContextMenu() 方法中,我正在检索所点击项目的 ID,并展开相应的菜单。

但是 - 我知道如何做到这一点的唯一方法是使用 v.getId(); - 这看起来很糟糕/奇怪,因为我在我的 if block 中使用了系统生成的 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);
}
}

最佳答案

您可以使用您的 ID 引用自动生成的 R.class

例如:

if(v.getId() == R.id.my_custom_id) 
{

}

我记得前段时间 R.class 中的 id 是静态最终的,但谷歌团队将其更改为静态,所以现在你不能在 switch 语句中使用它们,但可以在你的代码中随意使用它们。

找到了!更多相关信息:http://tools.android.com/tips/non-constant-fields

关于android - 在 if block 中使用手动创建的 id 而不是系统 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13732777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com