Обнаруживать, когда фрагмент рисуется?
В основном мне нужна функциональность onWindowFocusChanged()
, но на Fragment
.
К сожалению, прослушиватель onWindowFocusChanged()
на самом деле недоступен для фрагментов, поэтому я не уверен, что делать.
Как это сделать?
Ответы
Ответ 1
Фрагменты "нарисованы" через View
, который вы возвращаете в onCreateView()
. Вы можете использовать обработчики событий. Обычно, если есть команда, которая должна запускаться, когда сначала появляется View
, вы можете назначить ее в Runnable
и прикрепить ее к View
с помощью метода post()
.
getView().post(new Runnable() {
@Override
public void run() {
// code you want to run when view is visible for the first time
}
}
)
Ответ 2
onWindowFocusChanged (boolean hasFocus) вызывает вызовы в активности, но при рисовании фрагментов мы можем проверить метод onActivitycreated(). Отметьте это сообщение https://stackoverflow.com/a/32819850/2732632
Ответ 3
OnWindowFocusChanged не предоставляет информацию о рисовании вида (или не видел)
Внедрите OnWindowFocusChanged в каждом представлении, которое может иметь фокус в вашем фрагменте.
в псевдокоде:
Fragment implements OnWindowFocusChanged{
onCreate(){
btn.OnWindowFocusChanged(this);
editTxt.OnWindowFocusChanged(this);
....
}
public void OnWindowFocusChanged(boolean hasFocus){
// your fragment has focus
}
}