В основном мне нужна функциональность 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
}
}