How to call getWindow() outside an Activity in Android?

JavaAndroid

Java 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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKalimahView Question on Stackoverflow
Solution 1 - JavaOliver HauslerView Answer on Stackoverflow
Solution 2 - JavaMByDView Answer on Stackoverflow
Solution 3 - JavaHexiseView Answer on Stackoverflow
Solution 4 - Javajsaon chyengView Answer on Stackoverflow
Solution 5 - JavawwahyudiView Answer on Stackoverflow