为什么"这个"用作RelativeLayout构造函数中的参数?

时间:2016-06-08 17:18:23

标签: java android android-layout constructor this

在创建RelativeLayout对象时,我们编写此代码

RelativeLayout relativeLayout = new RelativeLayout(this);

我想问为什么我们通过" 这个"到构造函数?

在文档中我发现构造函数是:

RelativeLayout(Context context)

此构造函数参数接受Context类型的参数,但我们传递了" this " (我认为是我们正在创建的RelativeLayout对象),它的类型为RelativeLayout。所以不会有不匹配或我遗失的东西(绝对是!)

希望这也能回答我关于如何有意识地理解API的另一个问题

3 个答案:

答案 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构造函数