我正在尝试组织我的代码并将重复的函数移动到单个类.这行代码在扩展活动的类中工作正常:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将其包含在外部类中时,它无法正常工作.
如何从另一个类调用getWindow()将其应用于Activity中?
Oli*_*ler 44
您不应按照接受的答案中的建议保留参考资料.这有效,但可能会导致内存泄漏.
请从您的视图中使用此选项:
((Activity) getContext()).getWindow()...
Run Code Online (Sandbox Code Playgroud)
您在视图中拥有对活动的托管引用,您可以使用getContext()检索该活动.将其强制转换为Activity并使用活动中的任何方法,例如getWindow().
MBy*_*ByD 41
在创建类时以及调用相关方法并使用它时传递活动的引用.
void someMethodThatUsesActivity(Activity myActivityReference) {
myActivityReference.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
Run Code Online (Sandbox Code Playgroud)
Hex*_*ise 13
您可以使用以下方法将当前上下文转换为活动:
/**
* 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;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以从活动中获取窗口.