首先你好人,对不起我的英文不好,我是巴西人!自从我开始使用Android以来,我一直在使用StackOverflow学习其他用户的问题;但现在轮到我问...Android SDK - 哪个ListItem调用了实际的上下文菜单?
我做了一个教程的音板应用程序,但我决定实现一个新功能:设置为铃声/通知。我敢肯定,我将没有问题设置一个ogg文件作为铃声,因为我刚刚在这里看到了一个关于它的答案......我的问题是如何获取调用上下文菜单的listitem的ID?
看看我的代码(在葡萄牙扭矩/notificação意味着铃声/通知):
registerForContextMenu(findViewById(android.R.id.list));
...
@Override
public void onCreateContextMenu(ContextMenu menuc, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menuc, v, menuInfo);
menuc.setHeaderTitle("Usar como");
menuc.add(Menu.NONE, 0, Menu.NONE, "Toque");
menuc.add(Menu.NONE, 1, Menu.NONE,"Notificação");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle() == "Toque") { toque(0,item.getItemId()); }
else if(item.getTitle() == "Notificação") { notificacao(0,item.getItemId()); }
else { return false; }
return true;
}
public void toque(int position,int id){
Sound s = (Sound) mSounds.get(position);
Toast.makeText(this, s.getSoundResourceId(), Toast.LENGTH_SHORT).show();
}
public void notificacao(int position,int id){
Sound s = (Sound) mSounds.get(position);
Toast.makeText(this, s.getSoundResourceId(), Toast.LENGTH_SHORT).show();
}
所以,你可以看到我做了一个敬酒测试参数。现在我可以通过数字“0”得到res/raw/example.ogg,但我想要动态获取ListView的ID,以便我可以将其作为整数“位置”传递给它...
示例:
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getTitle() == "Toque") { toque(GET.LISTITEM.ID, item.getItemId()); }
else if (item.getTitle() == "Notificação"){ notificacao(GET.LISTITEM.ID, item.getItemId()); }
else { return false; }
return true;
}
我不知道我是否足够清楚,或者如果有可能,但我确信如果找到办法,我会很高兴。
在此先感谢卢卡斯。
非常感谢!它像一个魅力,但日食纠正我:调用(int)info.id,item.getItemId() – 2012-01-03 12:21:44
现在我有麻烦设置为铃声LOL。正是因为我有“res/raw/example.ogg”文本,所以我很容易。我试图调整我在这里找到的代码,但没有成功......你能帮我吗? – 2012-01-03 23:38:50
我认为不可能将您的应用的私人资源设置为铃声。您需要驻留在文件系统上的声音。 – nandeesh 2012-01-04 06:19:23