Android - openOptionsMenu не работает в onCreate

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

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

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

EDIT: Я был бы признателен, например, так:

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

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

Ответ 1

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

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

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

Ответ 2

Мое решение

//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);