我需要顯示爲ListView
項目的AlertDialog
與ListView
和上下文菜單。我更喜歡使用AlertDialog.Builder
,並呼籲setItems()
,所以Builder
程式化的佈局,我創建了一個ListView
的AlertDialog
內。對於使用內部Android資源的風格化,所以我不能在我的代碼中重新實現它。如何擴展AlertDialog.Builder結果?
的問題是,我不能趕上,因爲默認AlertDialog.onMenuItemSelected()
執行,不這樣的事件轉發到父上下文菜單項單擊事件:
public boolean onMenuItemSelected(int featureId, MenuItem item) {
return false;
}
我不能擴展AlertDialog.Builder
類,並迫使它來創建我自己的一個實例AlertDialog
與onMenuItemSelected()
覆蓋,因爲我需要重寫AlertDialog.Builder.create()
。但它採用的是私有P
變量,這是不是從派生類訪問:
public AlertDialog create() {
final AlertDialog dialog = new AlertDialog(P.mContext, mTheme, false);
P.apply(dialog.mAlert);
dialog.setCancelable(P.mCancelable);
if (P.mCancelable) {
dialog.setCanceledOnTouchOutside(true);
}
dialog.setOnCancelListener(P.mOnCancelListener);
if (P.mOnKeyListener != null) {
dialog.setOnKeyListener(P.mOnKeyListener);
}
return dialog;
}
有沒有辦法迫使AlertDialog.Builder
構建自定義AlertDialog
(與onMenuItemSelected
方法重寫)?
你的問題有點含糊。你講的是實現'ContextMenu',但是你指的是'onMenuItemSelected'回調。另外,我希望我明白,您正在嘗試爲'AlertDialog'列表中的元素顯示'ContextMenu'?如果是的話,我會建議不要這樣做,因爲它會讓用戶覺得很尷尬。另外'AlertDialog'類只是一個簡單的對話框,表明它不是爲擴展而設計的(因爲父類更適合這個)。 – Luksprog
對不起,我英文很差。我指的是'onMenuItemSelected',因爲它是你需要用來處理對話框中上下文菜單點擊的方法(而不是'onContextItemSelected')。我的應用程序中有一組過濾器。我讓用戶用AlertDialog選擇一個過濾器。我需要讓用戶從列表中刪除一個過濾器。至於我最好的方法是使用'刪除'上下文菜單項。你知道在哪裏可以找到上下文菜單事件調度的實際代碼? 「ContextMenu」接口的實際實現在哪裏?謝謝。 – Kallisto
我強烈建議您創建自己的'Dialog',其中包含一個'ListView'和過濾條目。我還會在每一行上放一個小的「Button」按鈕,這將觸發刪除該過濾器。 'ContextMenu'由系統處理。 – Luksprog