在创建RelativeLayout对象时,我们编写此代码
RelativeLayout relativeLayout = new RelativeLayout(this);
我想问为什么我们通过" 这个"到构造函数?
在文档中我发现构造函数是:
RelativeLayout(Context context)
此构造函数参数接受Context类型的参数,但我们传递了" this " (我认为是我们正在创建的RelativeLayout对象),它的类型为RelativeLayout。所以不会有不匹配或我遗失的东西(绝对是!)
希望这也能回答我关于如何有意识地理解API的另一个问题
答案 0 :(得分:2)
你错了,this
没有引用RelativeLayout。它指的是调用其方法的类(在您的情况下为Activity)。
这是来自java docs:
this
是Java中的关键字。它可以在Class的Method或构造函数中使用。它(this)用作对其Method或构造函数被调用的当前Object的引用。 this关键字可用于从实例Method或构造函数中引用当前对象的任何成员。
在您的情况下,this
是指向您当前所处活动的对象。请注意,活动间接扩展Context
(它扩展了课程扩展了另一个扩展Context
),这意味着它可以在任何需要Context
类型的地方使用。
这里,应用了隐式上传,因此您可以像这样使用它:
RelativeLayout relativeLayout = new RelativeLayout(this);
答案 1 :(得分:1)
要创建一个像RelativeLayout这样的View对象,你需要传递它将被放置的位置,该参数将传递上下文。
上下文必须是您的活动,因此如果您在Activity中调用该方法,this
将正常工作,但如果您从其他类型的类调用该方法,则需要传递如果不知道你在哪里调用这个方法,有些选项可能对你有帮助,那么当前上下文的参考很难提供帮助:
this.getActivity();
this.getBaseContext();
YourActivity.this;
如果在另一个类中使用另一个方法创建,则在构造
上传递上下文someMethod(this);
public static someMethod(Context context){
}
答案 2 :(得分:0)
执行new RelativeLayout(this)
时,您将活动的实例(this)传递给RelativeLayout构造函数。你能够做到这一点,因为你的活动来自上下文即。您的Activity是Context类的子类。 Activity类的一个实例也是Context的一个实例,因此可以用来调用RelativeLayout构造函数