gpt4 book ai didi

android - 如何在 Fragment 中获取 onWindowFocusChanged?

转载 作者:IT王子 更新时间:2023-10-28 23:28:38 25 4
gpt4 key购买 nike

我正在使用 Android Sliding Menu using Navigation Drawer .我知道 onWindowFocusChanged 在 MainActivity 上工作。我怎样才能检查它是否有Fragment的焦点?

有人说我可以将 hasFocus 传递给 fragment ,但我不知道该怎么做。谁能给我一些示例代码?

我想在我的 fragment 上运行↓这个

@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);

if (hasFocus) {
//I need to do someing.
method();
}
}

最佳答案

Android 4.3 (API 18) 起,您可以直接在 Fragment 中使用此代码:

Kotlin

view?.viewTreeObserver?.addOnWindowFocusChangeListener { hasFocus -> /*do your stuff here*/ }

或在您的项目中定义此扩展:

fun Fragment.addOnWindowFocusChangeListener(callback: (hasFocus: Boolean) -> Unit) =
view?.viewTreeObserver?.addOnWindowFocusChangeListener(callback)

然后只需调用

addOnWindowFocusChangeListener { hasFocus -> /*do your stuff here*/ }

fragment 中的任何位置(请注意当时 Root View 仍然不为空)。

注意:完成后不要忘记移除监听器(removeOnWindowFocusChangeListener() 方法)!


Java

getView().getViewTreeObserver().addOnWindowFocusChangeListener(hasFocus -> { /*do your stuff here*/ });

或没有 lambda:

getView().getViewTreeObserver().addOnWindowFocusChangeListener(new ViewTreeObserver.OnWindowFocusChangeListener() {
@Override
public void onWindowFocusChanged(final boolean hasFocus) {
// do your stuff here
}
});

您可以在 onViewCreated() 方法中获取非空 View 实例,或者在此之后从任何地方简单地调用 getView() .

注意:完成后不要忘记移除监听器(removeOnWindowFocusChangeListener() 方法)!

关于android - 如何在 Fragment 中获取 onWindowFocusChanged?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30129984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com