所以现在我可以使用这段代码:
Window a = getWindow();
a.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
而不是这段代码:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
我的一些高级管理员说,由于getWindow();
方法返回一个Window对象,我们可以使用上面的两个代码。
我的问题是:为什么我们需要从这段代码中获取一个返回的Window对象:Window a = getWindow();
我想当我这样做时,我已经有了一个Window对象
Window a;
但为什么它不起作用?
我的第二个问题是为什么我不能这样做:
Window a = new Window();
我认为它也创建了一个Window对象。
为什么我必须使用getWindow();
方法?
全部谢谢
PS:英语不是我的母语,如果我犯了一些错误就很抱歉
答案 0 :(得分:4)
我在这里假设java:
Window a;
不会创建新的Window
对象,它只会创建一个变量,该变量可以容纳Window
类型的对象。要创建对象本身 - 在你的情况下你需要调用它的构造函数 - 我假设getWindow()
做了什么。
此外,new Window
是语法错误 - 调用java中的构造函数类似于方法[with ()
和相关参数(如果有的话)。
答案 1 :(得分:2)
您可以使用它的构造函数创建对象。构造函数是一种方法
Window a = new Window;
是Java中的语法错误。并且你不能在a
之后使用Window a;
因为在java中你必须在使用之前初始化变量。
你能用笔想象它吗?你必须先买那支笔,不是吗?
Window a = new Window();
如果您编写它而不是Window a = new Window;
答案 2 :(得分:1)
这样想。你正在做面向对象的编程,对吧?你可以拥有一个对象的多个实例,但它们并不是完全相同的。
当你使用getWindow()时,你会得到一个特定的窗口。当你做的时候
Window a; //This will return null since the reference for some window object is created but currently points to null
或
Window a = new Window(ctx); //A window object reference is created which points to some new Window object in memory.
您正在引用一个窗口,但不是您打算使用的窗口。
我希望这可以解决问题。请好像还有其他问题。