Android Studio报错:'this'仅允许作为接收者类型首个参数名
解决Android Studio中
this参数的编译错误 嘿,我来帮你搞定这个编译错误!首先咱们先拆解错误提示的意思:
Error:(45, 61) error: as of release 8, 'this' is allowed as the parameter name for the receiver type only, which has to be the first Parameter
简单说,从Java 8开始,this关键字只有两种合法场景:要么是指代当前类的实例(比如在类的非静态方法里用this),要么是作为接收者类型的参数名(这是Java 8的语法糖,日常开发很少用到)。而你写的getActivity().this完全是语法错误——getActivity()已经返回了一个Activity对象,后面再跟.this根本不符合Java的语法规则。
再看你的代码问题:你在Tab Fragment里创建Sender实例,想传递当前Fragment依附的Activity对象,但写法错了。getActivity()方法本身就会返回当前Fragment绑定的Activity实例,不需要额外加.this。
修正后的代码
把错误的那行代码改成这样就可以正常编译了:
Sender s = new Sender(getActivity(), urlAddress, parameter1, parameter2, parameter3, parameter4, parameter5); s.execute();
额外小提示
如果你担心Fragment可能已经和Activity分离(比如Fragment被销毁但还没回收的时候),getActivity()可能返回null,建议加个非空判断避免空指针异常:
Activity hostActivity = getActivity(); if (hostActivity != null) { Sender s = new Sender(hostActivity, urlAddress, parameter1, parameter2, parameter3, parameter4, parameter5); s.execute(); }
内容的提问来源于stack exchange,提问作者user9703117
相关产品推荐
相关产品推荐

