Android Studio中ToDoAdapter构造方法报错:赋值与类型匹配问题
修复ToDoAdapter构造方法的编译错误
问题重现
你在实现任务管理模块的ToDoAdapter时,构造方法写了如下代码:
public Todoadapter(TaskFragment activity){ activity.getActivity() = activity; }
在TaskFragment中调用taskadapter = new Todoadapter(this);时,出现编译错误:
unexpected type activity.getActivity() = activity; required : variable found : value
错误原因
activity.getActivity()是方法调用,返回的是Fragment关联的Activity实例,你不能给方法的返回值赋值——Java语法要求赋值操作的左侧必须是可修改的变量,而非方法调用的结果。
修复方案
步骤1:给Adapter添加成员变量并正确赋值
在ToDoAdapter类中定义需要的成员变量,比如TaskFragment实例或Context,再在构造方法中完成赋值:
public class Todoadapter extends RecyclerView.Adapter<Todoadapter.ViewHolder> { // 定义成员变量 private TaskFragment mTaskFragment; private Context mContext; // 构造方法 public Todoadapter(TaskFragment fragment) { // 给成员变量赋值 mTaskFragment = fragment; // 如果需要Context,可从Fragment获取 mContext = fragment.getActivity(); } // 其他Adapter生命周期方法... }
步骤2:保持Fragment中的调用代码不变
TaskFragment里的调用代码无需修改,继续使用:
taskadapter = new Todoadapter(this);
优化建议
如果Adapter仅需要Context来加载布局、获取资源,可直接传入Context降低耦合度:
// Adapter构造方法 public Todoadapter(Context context) { mContext = context; } // Fragment中调用 taskadapter = new Todoadapter(getActivity());
内容的提问来源于stack exchange,提问作者La Poubelle
相关产品推荐
相关产品推荐

