我正在創建一個帶有ListView的簡單對話框。我想能夠訪問它上下文菜單。 這裏是基本的代碼中,我:onContextItemSelected從未使用帶有ListView的對話框調用
<On CreateDialog>
listViewSongs=(ListView) layout.findViewById(R.id.ListView_Songs);
listViewSongs.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, drawingPanel.metronome.getSongNames()));
registerForContextMenu(listViewSongs);
然後我只需添加一個簡單的項目:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Sample Context Menu");
menu.add(0, MENU_EDIT_SONG, 0, "Edit");
}
最後我重寫onContextItemSelected:
@Override
public boolean onContextItemSelected(MenuItem item) {
super.onContextItemSelected(item);
editSong();
return true;
}
所以我的問題是,當我長按listview我得到的上下文菜單,但在點擊它的唯一選項後,它從來沒有調用onContextItemSelected :( 任何幫助?
PS:我也試着重寫onMenuItemSelected,onOptionsItemSelected,但我得到了相同的結果:\從來沒有被調用過。
這聽起來像你想要一個活動而不是一個對話框。 – Falmarri 2010-10-25 17:41:03
你爲什麼要調用super.onOptionsItemSelected(item);從onContextItemSelected?你是如何確定onContextItemSelected從未被調用的?斷點?日誌記錄?你看看logcat中是否有任何錯誤? – 2010-10-25 17:42:20
@Mayra:對不起這是一個錯字,它不是super.onOptionsItemSelected,而是onContextItemSelected,在代碼中它很好。我只是編輯它。 而且我從來沒有打過電話,因爲我只是進入函數而輸入斷點。 – fernandojsg 2010-10-25 17:48:19