Попробуйте использовать контекст действия, который будет находиться в диалоге. Но будьте осторожны, когда используете ключевое слово "this", потому что оно не будет работать каждый раз.
Например, если у вас есть TabActivity в качестве хоста с двумя вкладками, и каждая вкладка является другим действием, и если вы попытаетесь создать диалог из одной из вкладок (действий) и если вы используете «this», то вы получите исключение , В этом случае диалог должен быть связан с активностью хоста, на котором размещено все и видно. (Вы можете сказать наиболее видимый контекст родительской активности)
Я не нашел эту информацию ни в одном документе, но пытался. Это моё решение без сильного фона, если кто-то с более известными знаниями, не стесняйтесь комментировать.
Завершающее чтение ido из ido.el - еще один способ сделать это.
Его полезная особенность заключается в том, что вы можете использовать регулярные выражения для фильтрации кандидатов, и вы может включать и выключать эту функцию на лету. См. Ido.el для более подробной информации.
Пакет ido имеет удобную функцию завершения, называемую 'ido-complete-read'. Например, вот простая настройка, позволяющая отображать списки построчно:
(defun x-ido-completing-read
(prompt choices &optional predicate require-match initial-input hist def)
(let* ((indent (concat "\n" (make-string (length prompt) ? )))
(ido-decorations
`("" "" ,indent ,(concat indent "...")
"[" "]" " [No match]" " [Matched]" " [Not readable]" " [Too big]")))
(ido-completing-read prompt choices predicate require-match initial-input hist def)))
Внутри кода yasnippet, доступного из кода Google, они используют dropdown-list.el от Jaeyoun Chung для отображения возможных фрагментов, которые можно использовать на данном этапе. Это дает всплывающее (похожее на всплывающую подсказку) меню в позиции курсора, которую вы можете выбрать с помощью клавиш со стрелками и ввести, или вы можете выбрать по номеру.
Зачем изобретать колеса? корпоративный режим поддерживает несколько языков