我有一個TabHost與2片段,這兩個列表。 onCreateContextMenu適用於兩者,但onContextItemSelected均指向第一個Fragment類。我在XML文件中爲列表使用了不同的名稱,因此ID不一樣。與TabHost問題的上下文菜單
下面是代碼都onCreateContextMenu
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
int itemID = info.position;
Map m = (HashMap) this.listView.getAdapter().getItem(itemID);
menu.setHeaderTitle(getString(R.string.options));
menu.add(0, v.getId(), 0, activity.getString(R.string.delete));
}
這裏onContextItemSelected的第一個片段,第二個是非常簡單,只是改變變種名稱相同的代碼。事實上,這並沒有改變任何問題,因爲這個方法只能在第一個片段上運行,即使我在第二個列表中。
@Override
public boolean onContextItemSelected(MenuItem item) {
ContextMenuInfo menuInfo = (ContextMenuInfo) item.getMenuInfo();
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
int itemID = info.position;
Map m = (HashMap) this.listView.getAdapter().getItem(itemID);
processId = Integer.parseInt(m.get("processId").toString());
activity.setSupportProgressBarIndeterminateVisibility(true);
runBackground(activity.getString(R.string.accessingECM), false, false, ACTION_REMOVE);
return true;
}
我這是怎麼註冊的onActivityCreated方法上下文菜單。請注意onCreateContextMenu適用於Fragment。
listView = (ListView) this.view.findViewById(R.id.listProcess);
registerForContextMenu(listView);
我試圖改變menu.add()第一和第三參數,以(1,1)和(1,2)。也嘗試了兩個菜單。無。仍然不起作用。
感謝
告訴我們,您註冊的每個列表的上下文菜單上面 – Barak
OK,代碼嘿,如果我的回答可以幫助請點擊旁邊的選中標記它,使之接受的答案(並讓其他人知道您的問題/問題已解決/回答)。 – alexandrenofre
編輯 – Barak