Android - openOptionsMenu не работает в onCreate - PullRequest
10 голосов
/ 06 мая 2010

Есть ли другой способ вызвать openOptionsMenu после отображения активности без использования чего-то подобного:

new Handler().postDelayed(new Runnable() {
            public void run() {
                openOptionsMenu();
            }
        }, 1000); 

Ссылка: http://groups.google.com/group/android-beginners/browse_frm/thread/b10a8ea840c07725/1ce48bb147a3ed1a?#1ce48bb147a3ed1a

РЕДАКТИРОВАТЬ: Я был бы признателен пример, как это:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Now I guess something like Window.Callback.onAttachedToWindow(...) should be done?
}

Ответы [ 2 ]

21 голосов
/ 06 мая 2010

Я снова посмотрел Activity, и у него есть метод onAttachedToWindow , унаследованный от Window.Callback , начиная с уровня API 5. Если вы используете этот уровень, вам просто нужно переопределить этот метод в вашем Activity.

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    openOptionsMenu();
}

Если вы используете версию, предшествующую 5, вам придется переопределить метод onAttachedToWindow в View . Это очень легко, если ваш View создан в коде. Если он создан в XMl, то это не намного сложнее - вы должны найти здесь полезные инструкции 1014 *.

0 голосов
/ 10 февраля 2011

Мое решение

//Open menu manually from code 
    Timer timing = new Timer();
    timing.schedule(new TimerTask() {

                /**
                 * {@inheritDoc}
                 */
                @Override
                public void run() {

                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            openOptionsMenu();
                        }
                    });

                }
            }, 1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...