You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android:点击增减按钮显示整数报错‘无法解析display(int)方法’求助

问题解决:Cannot resolve method 'display(int)'

报错原因

  1. 方法嵌套定义违规:你在onCreate()方法内部定义了increment()和onClick()方法,Java不允许在方法内部嵌套定义其他方法,这会导致这两个方法无法被编译器正确识别,进而它们调用的display()方法也找不到。
  2. 目标方法不存在且作用域错误:你代码里实际实现的是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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:01:03