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

2022-08-31 20:50:11

我正在尝试组织我的代码并将重复函数移动到单个类。这行代码在扩展活动的类中工作正常:

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

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

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


答案 1

您不应按照已接受答案中的建议保留参考资料。这有效,但可能会导致内存泄漏。

从您的视图中使用以下命令:

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

您在视图中有一个对活动的托管引用,可以使用 getContext() 检索该引用。将其转换为 Activity,并使用活动中的任何方法,例如 getWindow()。


答案 2

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

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

推荐