Android Studio按钮点击无法将数值累加至total TextView问题求助
错误点整理
- 语法错误:Java不允许方法嵌套定义,你将
addTotal方法写在了onCreate方法内部,代码本身无法正常编译运行。 - 逻辑错位:你同时混用了布局
android:onClick属性绑定、代码setOnClickListener绑定两种点击事件实现方式,且把所有按钮的监听设置逻辑都放到了addTotal方法内,只有先点击一次按钮触发addTotal才会给按钮设置监听,而addTotal本身没有累加逻辑,第一次点击无任何效果,后续还会出现两种点击事件冲突的问题。 - 鲁棒性不足:如果
totalAmtTextView初始内容不是纯数字(比如默认带$符号、为空),调用Double.parseDouble时会直接抛出异常导致崩溃。
修正方案
选择其中一种点击事件实现方式即可,不要混用,以下提供两种可选方案:
方案1:使用代码设置监听(更推荐,逻辑更可控)
- 先删掉所有布局Button中的
android:onClick="addTotal"属性 - 修正后的
MainActivity.java代码如下:
public class MainActivity extends AppCompatActivity { // 把总金额提为成员变量,避免每次都从TextView解析,更稳定 private double total = 0.0; private TextView totalAmt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化控件 Button button1 = findViewById(R.id.button1); Button button2 = findViewById(R.id.button2); Button button3 = findViewById(R.id.button3); totalAmt = findViewById(R.id.totalAmt); // 初始化显示总金额 totalAmt.setText(String.valueOf(total)); // 给每个按钮设置点击监听 button1.setOnClickListener(view -> { total += 2; totalAmt.setText(String.valueOf(total)); }); button2.setOnClickListener(view -> { total += 5; totalAmt.setText(String.valueOf(total)); }); button3.setOnClickListener(view -> { total += 8; totalAmt.setText(String.valueOf(total)); }); } }
方案2:保留布局android:onClick属性实现
不需要写setOnClickListener相关代码,直接调整方法结构即可,参考代码:
public class MainActivity extends AppCompatActivity { private double total = 0.0; private TextView totalAmt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); totalAmt = findViewById(R.id.totalAmt); totalAmt.setText(String.valueOf(total)); } // addTotal要作为Activity的成员方法,不能写在onCreate里 public void addTotal(View v) { // 根据点击的按钮id判断加多少 if (v.getId() == R.id.button1) { total += 2; } else if (v.getId() == R.id.button2) { total +=5; } else if (v.getId() == R.id.button3) { total +=8; } totalAmt.setText(String.valueOf(total)); } }
内容的提问来源于stack exchange,提问作者Chan Jun Mun
相关产品推荐
相关产品推荐

