Мне нужен способ запускать код в тот момент, когда активность полностью загружена, выложена, нарисована и готова для пользовательских сенсорных элементов управления. Какой метод/слушатель делает это?
Какой метод называется моментом, когда деятельность полностью изложена и готова для взаимодействия с пользователем?
Ответ 1
Commonsware прав, не объясняя, что вы пытаетесь сделать и почему, невозможно ответить на ваш вопрос, и я подозреваю, что с деталями вы, вероятно, думаете об этом неправильно.
Тем не менее, у меня есть код, в котором мне нужно было сделать очень фанк-макет после того, как все было измерено.
Я мог бы расширить каждый из классов вида в макете и переопределить onMeasure()
, но это было бы большой работой. Итак, я закончил это. Не очень, но он работает.
mainMenuLayout - это макет, в котором мне нужно было напугать. Обратный вызов onGlobalLayout
вызывается, когда макет завершает рисование. Utils.setTitleText()
- это место, где происходит funkiness, и когда я передаю mainMenuLayout, он имеет доступ к положению и размеру всех дочерних представлений.
mainMenuLayout.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// only want to do this once
mainMenuLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
// set the menu title, the empty string check prevents sub-classes
// from blanking out the title - which they shouldn't but belt and braces!
if (!titleText.equals("")){
Utils.setTitleText(_context,mainMenuLayout,titleText);
}
}
});
Ответ 2
Я обнаружил, что если я отправлю сообщение Runnable
в очередь сообщений, он будет запущен после того, как будет создан контент для этой операции. Например, если я хочу ширину и высоту View
, я бы сделал следующее:
view.post( new Runnable() {
@Override
public void run() {
int width = view.getWidth(); // will be non-zero
int height = view.getHeight(); // will be non-zero
}
} );
Я нашел успех с этим в любое время после вызова setContentView()
.
Ответ 3
метод onRestoreInstanceState - это тот, который вызван для восстановления состояния пользовательского интерфейса, который вызывается после onResume. Я думаю, вы можете использовать этот метод onRestoreInstanceState.. и поместить свой код после восстановления пользовательского интерфейса состояние из сохраненногоInstanceState...
Ответ 4
Попробуйте onPostResume()
, вызванный после onResume()
, в этот момент экземпляр Activity должен быть видимым, и отображаются все основные Представления. Во многих ситуациях это верно, когда вызывается onResume()
.
Ответ 5
Может быть, это немного помогает:
@Override
public void onAttachedToWindow(){}