Java调用无返回值方法报错:参数列表不匹配问题求助
问题排查与解决方案
嗨,我来帮你搞定这个方法调用的错误问题~
错误原因分析
你遇到的编译错误逻辑很清晰:你定义的saveInfo方法要求必须传入一个View类型的参数,但你在onClick事件里调用它时,没有传任何参数,导致实际调用的参数列表和方法定义的参数列表不匹配,所以编译器直接报错了。
看你给出的saveInfo方法代码:
public void saveInfo(View view) { // ... 方法内部逻辑 }
这里的View view是方法的必填参数,但你调用时写的是saveInfo();,完全没有传参,自然不符合方法的调用规则。
两种可行解决方案
从你的代码逻辑来看,saveInfo方法里并没有用到传入的view参数,所以推荐下面两种解决方式:
方案1:移除方法的View参数(更推荐)
既然方法内部根本用不到这个View参数,直接把它去掉就好,修改后的方法如下:
public void saveInfo() { SharedPreferences sharedPref = getSharedPreferences("score", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt("totalScore", clickCounter); editor.putInt("yellowScore", yellowCounter); editor.putInt("magentaScore", magentaCounter); editor.putInt("cyanScore", cyanCounter); editor.apply(); }
这样你原来写的saveInfo();调用就完全合法了,不需要做任何改动。
方案2:调用时传入View参数
如果你之后可能会用到这个View参数(比如需要通过它获取控件相关信息),那就在调用时传入onClick方法里的v参数:
// 在onClick事件里修改调用代码 saveInfo(v);
这样参数列表就完全匹配了,代码也能正常编译运行。
小提醒
另外注意到你代码里的yellowCounter变量,在当前提供的代码片段里没看到定义,记得确保这个变量已经正确初始化过,不然可能会出现新的运行时错误哦~
内容的提问来源于stack exchange,提问作者owe123




