Android开发:点击按钮后判断金额是否大于100并将calculateAmount方法中的amount_checker值传入onCreate方法
解决方法:传递calculateAmount的金额值到按钮点击事件
看起来你需要让按钮点击时能用到calculateAmount方法里计算出的amount_checker值,其实核心就是确保变量的作用域正确,并且在需要的时候调用计算方法。我给你两种可行的方案:
第一步:确保amount_checker是类成员变量
首先,你需要在CartActivity类里声明amount_checker作为成员变量,而不是calculateAmount的局部变量,这样两个方法都能访问到它:
public class CartActivity extends AppCompatActivity { // 声明类成员变量,让onCreate和calculateAmount都能访问 private double amount_checker; private Button buyItemButton; // 你的其他成员变量,比如itemsList等 // 剩下的方法... }
方案一:初始化时计算金额(适合金额固定的场景)
如果你的购物车金额在页面加载后就不会变化,可以在onCreate里提前调用calculateAmount,确保按钮点击时已经有正确的金额值:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_cart_layout); // 记得设置你的布局文件 buyItemButton = findViewById(R.id.buy_item_button); // 初始化按钮 // 先计算好金额,再设置点击事件 calculateAmount(); buyItemButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (amount_checker >= 100){ Intent intent = new Intent(CartActivity.this,AddressActivity.class); intent.putExtra("itemList", (Serializable) itemsList); startActivity(intent); }else { // 优化提示文字,让用户更清楚 Toast.makeText(getApplicationContext(), "当前金额:" + amount_checker, Toast.LENGTH_SHORT).show(); } } }); }
方案二:点击按钮时重新计算(适合金额动态变化的场景)
如果用户可能在页面上修改购物车商品(比如增减数量),每次点击按钮时都应该重新计算最新的金额,这时候把calculateAmount放在点击事件里:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_cart_layout); buyItemButton = findViewById(R.id.buy_item_button); buyItemButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 每次点击都重新计算最新金额 calculateAmount(); if (amount_checker >= 100){ Intent intent = new Intent(CartActivity.this,AddressActivity.class); intent.putExtra("itemList", (Serializable) itemsList); startActivity(intent); }else { Toast.makeText(getApplicationContext(), "当前金额:" + amount_checker, Toast.LENGTH_SHORT).show(); } } }); }
补充说明
- 两种方案的核心都是让
amount_checker的作用域覆盖到点击事件,并且在需要的时候触发计算。 - 如果你原来的
calculateAmount方法里是根据购物车商品动态计算金额(不是示例里的固定值),方案二更稳妥,能保证每次点击都拿到最新数据。
内容的提问来源于stack exchange,提问作者xmadevelpers
相关产品推荐
相关产品推荐

