How to call getWindow() outside an Activity in Android?
JavaAndroidJava Problem Overview
I am trying to organize my code and move repetitive functions to a single class. This line of code works fine inside a class that extends activity:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
However it is not working when I try to include it into an external class.
How do I call getWindow() from another class to apply it inside an Activity?
Java Solutions
Solution 1 - Java
You shall not keep references around as suggested in the accepted answer. This works, but may cause memory leaks.
Use this instead from your view:
((Activity) getContext()).getWindow()...
You have a managed reference to your activity in your view, which you can retrieve using getContext(). Cast it to Activity and use any methods from the activity, such as getWindow().
Solution 2 - Java
Pass a reference of the activity when you create the class, and when calling relevant methods and use it.
void someMethodThatUsesActivity(Activity myActivityReference) {
myActivityReference.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
Solution 3 - Java
You can use following method to cast current context to activity:
/**
* Get activity instance from desired context.
*/
public static Activity getActivity(Context context) {
if (context == null) return null;
if (context instanceof Activity) return (Activity) context;
if (context instanceof ContextWrapper) return getActivity(((ContextWrapper)context).getBaseContext());
return null;
}
Then you can get window from the activity.
Solution 4 - Java
kotlin code:
myView.rootView.findViewById<View>(android.R.id.content).context as Activity
Solution 5 - Java
Use
getActivity().getWindow().requestFeature(Window.FEATURE_PROGRESS);
It's will be easier