如何在Android中的Activity之外调用getWindow()?

我试图组织我的代码,并将重复的function移到一个类中。 这一行代码可以在扩展活动的类中正常工作:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

但是,当我尝试将其包含到外部类中时,它不起作用。

如何从另一个类中调用getWindow()以将其应用于Activity?

Solutions Collecting From Web of "如何在Android中的Activity之外调用getWindow()?"

在创build类时以及调用相关方法并使用时传递活动的引用。

 void someMethodThatUsesActivity(Activity myActivityReference) { myActivityReference.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } 

正如接受的答案中所build议的那样,你不应该继续引用它。 这工作,但可能会导致内存泄漏。

从你的观点来看这个:

 ((Activity) getContext()).getWindow()... 

您可以使用getContext()来检索视图中的活动的托pipe引用。 将其转换为“活动”并使用活动中的任何方法,例如getWindow()。

您可以使用以下方法将当前上下文转换为活动:

 /** * 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; } 

然后你可以从活动中获得窗口。

使用

 getActivity().getWindow().requestFeature(Window.FEATURE_PROGRESS); 

这会更容易