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