Android:点击增减按钮显示整数报错‘无法解析display(int)方法’求助
问题解决:Cannot resolve method 'display(int)'
报错原因
- 方法嵌套定义违规:你在
onCreate()方法内部定义了increment()和onClick()方法,Java不允许在方法内部嵌套定义其他方法,这会导致这两个方法无法被编译器正确识别,进而它们调用的display()方法也找不到。 - 目标方法不存在且作用域错误:你代码里实际实现的是
display1(),但调用的是display(),名称不匹配;同时display1()是定义在OnClickListener匿名内部类中的私有方法,外部方法无法访问。
修复后的代码
package com.example.justjava; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.text.NumberFormat; public class MainActivity extends AppCompatActivity { private TextView num; // 提升为类成员变量,方便所有方法访问 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); num = findViewById(R.id.num); Button order1 = findViewById(R.id.order); order1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int quantity = 2; display(quantity); displayPrice(quantity*5); } private void displayPrice(int number) { TextView priceTextView = findViewById(R.id.price_text_view); priceTextView.setText(NumberFormat.getCurrencyInstance().format(number)); } }); } // 移到类顶层作为成员方法,对应加号按钮点击事件 public void increment(View view) { int quantity = 2; display(quantity); } // 重命名避免冲突,移到类顶层作为成员方法,对应减号按钮点击事件 public void decrement(View view) { int quantity = 2; display(quantity); } // 统一的display方法,放在类顶层,所有方法均可调用 private void display(int number) { num.setText("" + number); } }
后续避坑注意事项
- 遵守Java方法定义规则:所有方法必须直接属于类(成员方法)或静态方法,禁止在方法内部嵌套定义其他方法。
- 保持方法命名一致性:调用方法时要确保名称、参数类型和数量与实现的方法完全一致。
- 合理管理变量作用域:如果多个方法需要访问同一控件,将其声明为类成员变量,避免重复查找或作用域限制问题。
- 避免方法名冲突:不要使用和系统回调方法(如
onClick)重名的自定义方法,建议使用语义明确的名称(如decrement)。
内容的提问来源于stack exchange,提问作者Amira Abbas
相关产品推荐
相关产品推荐

