Android小费税费总额计算器:EditText赋值问题求助
解决EditText自动赋值税率的问题
嘿,作为Java/Android新手遇到这个问题太正常了,我来帮你捋清楚怎么实现这个需求!
首先,我默认你有一个ID为edit_state的EditText用来让用户输入CA/OR/FL(毕竟你提到的代码片段里没包含这个输入项)。下面分两种实用场景给你解决方案:
场景1:点击计算按钮时赋值税率
在你的calculate方法里,补充州代码的判断逻辑,同时处理空输入和大小写兼容的问题,避免程序崩溃:
public void calculate(View view) { // 获取各个EditText实例 EditText billET = findViewById(R.id.edit_bill_amount); EditText tipPercentET = findViewById(R.id.edit_tip_percent); EditText taxPercentET = findViewById(R.id.edit_tax_percent); EditText stateET = findViewById(R.id.edit_state); // 输入州代码的EditText // 处理州代码:去掉首尾空格,统一转成大写(兼容用户输入小写的情况) String state = stateET.getText().toString().trim().toUpperCase(); // 先判断用户是否输入了有效内容 if (state.isEmpty()) { Toast.makeText(this, "请输入有效的州代码哦(CA/OR/FL)", Toast.LENGTH_SHORT).show(); return; } // 根据州代码匹配对应税率并赋值 switch (state) { case "CA": taxPercentET.setText("7"); // 如果需要显示带%符号,改成"7%"即可,计算时注意转成数字 break; case "OR": taxPercentET.setText("8"); break; case "FL": taxPercentET.setText("10"); break; default: taxPercentET.setText(""); Toast.makeText(this, "请输入CA、OR或FL其中一个州代码", Toast.LENGTH_SHORT).show(); break; } // 这里继续写你的小费、总额计算逻辑... }
场景2:用户输入州代码时实时自动填充税率(体验更流畅)
如果想让用户输入完CA/OR/FL后立刻自动显示税率,不用等点击计算按钮,可以给州代码的EditText添加TextWatcher监听:
// 在Activity的onCreate方法里初始化监听 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EditText stateET = findViewById(R.id.edit_state); EditText taxPercentET = findViewById(R.id.edit_tax_percent); stateET.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // 此方法无需处理 } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { String state = s.toString().trim().toUpperCase(); // 实时根据输入内容匹配税率 switch (state) { case "CA": taxPercentET.setText("7"); break; case "OR": taxPercentET.setText("8"); break; case "FL": taxPercentET.setText("10"); break; default: taxPercentET.setText(""); // 输入无效代码时清空税率输入框 break; } } @Override public void afterTextChanged(Editable s) { // 此方法无需处理 } }); }
额外小提示
- 可以给
edit_state的XML属性添加android:inputType="textCapCharacters",让用户输入自动转成大写,省去大小写判断的麻烦 - 如果税率需要参与计算,记得把字符串转成数字类型(比如把"7"转成
7.0 / 100),不要直接用字符串做运算,避免出错
内容的提问来源于stack exchange,提问作者Charlie Batista
相关产品推荐
相关产品推荐

