Как отличить Xsun от Xorg, программно?

Вызовите метод super:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // TODO Add your menu entries here
    super.onCreateOptionsMenu(menu, inflater);
}

Поместите операторы журнала в код, чтобы увидеть, не вызывается ли метод или не изменяется ли меню вашим кодом.

Также убедитесь, что вы звоните setHasOptionsMenu(boolean) в onCreate(Bundle), чтобы уведомить фрагмент о том, что он должен участвовать в обработке меню опций.

5
задан user127517 23 June 2009 в 11:33
поделиться

3 ответа

Возможно, это немного взломано, но если вы посмотрите на список расширений, возвращаемых Xsun и Xorg, вы увидите, что у Xorg есть несколько дополнительных расширений, производных от XFree86.

xdpyinfo можно использовать для вывода списка расширений через командную строку для проверки различий; программно вы можете использовать XListExtensions () или XQueryExtension () .

(У меня нет Xsun X Server под рукой, но я был уверен, когда посмотрел в прошлом они сильно различались).

1
ответ дан 15 December 2019 в 06:33
поделиться

Спасибо! Ой, это строка VendorRelease (). В любом случае, к сожалению, мы не можем делать ставки на эту строку. Он меняется достаточно часто, чтобы возникать проблема, как для Xsun, так и для Xorg. Я нашел решение, работающее (надеюсь) для них и для различных других (производных) серверов, таких как Xvfb, Xnest и т.д.

Xsun действительно использует третье значение в массиве ключей для кодов клавиш KP_ (numpad). Xorg использует 1-й или 2-й. Сниффер должен сначала получить код ключа для KP_ keysym, например XK_KP_7, во-вторых, понюхайте то, что находится в XKeycodeToKeysym (d, keycode, [0-3]). Наш XK_KP_7 будет в индексе 2 для Xsun.

0
ответ дан 15 December 2019 в 06:33
поделиться
$ xdpyinfo | grep vendor
vendor string:    The X.Org Foundation
vendor release number:    10601901

Это xorg-server 1.6.1 в Linux. Надеюсь, XOrg и XSun в Solaris будут здесь отличаться.

Чтобы вывести эти два поля, xdpyinfo вызывает макрос ServerVendor , чтобы определить поставщика, а затем анализирует возвращенные данные. Макрос VendorRelease по-разному в зависимости от того, что ServerVendor было.

Кстати, что такое VendorString () ? У меня нет функции или макроса с таким названием ...

2
ответ дан 15 December 2019 в 06:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: