android 问题 Toast.makeText()的第一个参数怎么有的时候是this有的时候是context

2024-12-12 21:55:42
推荐回答(5个)
回答1:

this只是你当前所在对象的实例,content是可以包括任何的上下文实例的。

回答2:

传参没有定义到方法内,定义一个Context对象名为context 语句块第一行写this.context=context;
如果这个方法父类继承的是activity ,直接写getApplictionContext() 不用传参

回答3:

this不一定指Activity 他是指当前环境的上下文 在这里this就是值当前BroadcastReceiver

onReceive不是Activity中的方法 你这是个BroadcastReceiver 用方法参数中的context应该可以啊

回答4:

楼上几位说的都不太透彻,我来解释下。在activity和 service中使用的this,的确可以代替context,因为activity和service本身就是继承于context类的,也就是说,那里面的this,就是一个context。

再来说上面这个context为什么不能用。因为toast是一个view,每一个view被添加的时候都需要一个token,activity中的context就包含了当前activity窗口的token,所以能够使用,而onReceive中的context,并不是隶属于某个应用程序进程的,而是属于系统的context,所以这里会报错。

回答5:

onReceive中的context不是指的当前Activity