I am using Android Sliding Menu using Navigation Drawer. I know that onWindowFocusChanged
work on MainActivity. How can I check is it hasFocus on Fragment?
someone said that I can pass the hasFocus
to fragment, but I dont know how to do this. Can anyone give me some sample code?
I want to run ↓ this on my fragment
@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { //I need to do someing. method(); } }
From Android 4.3 (API 18) and up you can use this code directly in your Fragment:
view?.viewTreeObserver?.addOnWindowFocusChangeListener { hasFocus -> /*do your stuff here*/ }
or define this extension in your project:
fun Fragment.addOnWindowFocusChangeListener(callback: (hasFocus: Boolean) -> Unit) = view?.viewTreeObserver?.addOnWindowFocusChangeListener(callback)
then simply call
addOnWindowFocusChangeListener { hasFocus -> /*do your stuff here*/ }
anywhere in your fragment (just be careful that the root view is still not null at that time).
getView().getViewTreeObserver().addOnWindowFocusChangeListener(hasFocus -> { /*do your stuff here*/ });
or without lambda:
getView().getViewTreeObserver().addOnWindowFocusChangeListener(new ViewTreeObserver.OnWindowFocusChangeListener() { @Override public void onWindowFocusChanged(final boolean hasFocus) { // do your stuff here } });
Where you can get the non-null View instance in the onViewCreated() method or simply call getView() from anywhere after that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With