首先你好人,對不起我的英文不好,我是巴西人!自從我開始使用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