Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android新手:为什么类必须扩展活动才能传递其上下文_Java_Android - Fatal编程技术网

Java android新手:为什么类必须扩展活动才能传递其上下文

Java android新手:为什么类必须扩展活动才能传递其上下文,java,android,Java,Android,有一个名为Utils的类: public class Utils{ } 还有一个类叫做HotOrNot。它包含如下构造函数: public HotOrNot(Context c){ ourContext =c ;} public class Utils extends Activity { } 在utils类中,我想启动HotOrNot的一个实例,因此我键入以下内容: HotOrNot info = new HotOrNot(this); 但是,此代码给了我以下错误: 构造函数Ho

有一个名为Utils的类:

public class Utils{  }
还有一个类叫做HotOrNot。它包含如下构造函数:

public HotOrNot(Context c){ ourContext =c ;}
public class Utils extends Activity {   }
在utils类中,我想启动HotOrNot的一个实例,因此我键入以下内容:

HotOrNot info = new HotOrNot(this);
但是,此代码给了我以下错误:

构造函数HotOrNot(Utils)未定义

我通过如下扩展Utils类解决了此错误:

public HotOrNot(Context c){ ourContext =c ;}
public class Utils extends Activity {   }

为什么Utils必须扩展活动才能传递其上下文HotOrNot的构造函数?

HotOrNot的构造函数需要一个
上下文(通常这是您的主要活动)。
因此,仅仅在Util类中传递
这个
是不起作用的(因为它不是
上下文
的子类)
不要在你的Utils类中扩展
活动
,你应该以某种方式将你的
活动
的引用传递给Utils,这样你就可以在那里使用它了。

因为活动扩展了类上下文,而Utils没有。你的问题没有多大意义。假设霍托诺特是一辆汽车,它的制造者需要一个司机。你不能把苹果递给汽车的制造者,因为苹果不是司机。当然,你可以让苹果扩展驱动程序,假装它是一个驱动程序,并能够将它传递给汽车制造商。但尽管它可以编译,但我怀疑它是否有用。您可能应该学习Java教程。仅扩展
Activity
即可解决编译错误,但它不会起作用。您可以将活动上下文传递给utils类的构造函数注意不要保留对上下文活动的长期引用(对活动的引用应与活动本身具有相同的生命周期)如何按照您的建议传递对活动的引用?@lisagren
new-Utils(ActivityName.this)
then-Utils-class
COntext-mCOntext
然后
公共UTIL(上下文){mCOntext=Context;}
@lisagreen现在将mCOntext用作新的HotOrNot(mCOntext);