在开发中遇到的关于android手机自带计算器显示格式纠正问题
此问题修改的文件路径:alps/packages/apps/Calculator/src/com/android/calculator2/CalculatorExpressionBuilder.java
replace()方法中做修改:
在switch循环后加入如下代码
if(expr.length()>0){
char mText=expr.charAt(expr.length()-1);
Boolean mBoolean =false;
if(!(mText==('0')||mText==('1')||mText==('2')||
mText==('3')||mText==('4')||mText==('5')||
mText==('6')||mText==('7')||mText==('8')||
mText==('9'))){
mBoolean=true;
}
android.util.Log.i("CalculatorExpressionBuilder","mBoolean="+mBoolean);
if(appendExpr.equals(".")&&mBoolean){
appendExpr="0.";
}
}else if(expr.length()==0&&appendExpr.equals(".")){
appendExpr="0.";
}
}
此方法完整的代码所示
@Override
public SpannableStringBuilder replace(int start, int end, CharSequence tb, int tbstart,
int tbend) {
if (start != length() || end != length()) {
mIsEdited = true;
return super.replace(start, end, tb, tbstart, tbend);
}
String appendExpr =
mTokenizer.getNormalizedExpression(tb.subSequence(tbstart, tbend).toString());
if (appendExpr.length() == 1) {
final String expr = mTokenizer.getNormalizedExpression(toString());
// SPRD 515934 enter all numbers and operators, calculator crash
final int len = expr.length();
switch (appendExpr.charAt(0)) {
case '.':
// don't allow two decimals in the same number
final int index = expr.lastIndexOf('.');
// SPRD: 544823 modify for StringIndexOutOfBoundsException
if (index != -1 && index < start && TextUtils.isDigitsOnly(expr.substring(index + 1, start))) {
appendExpr = "";
}
break;
case '+':
case '*':
case '/':
// don't allow leading operator
if (start == 0) {
appendExpr = "";
break;
}
/*SPRD: Bug 487833 don't allow leading operator change from - to * or / @{ */
if (start == 1 && expr.equals("-")) {
appendExpr = "";
break;
}
/* @} */
/* SPRD 515934 enter all numbers and operators, calculator crash @{ */
Log.d("Calculator", "len: " + len + " start: " + start+" expr: "+expr);
if (start > len) {
break;
}
/* @} */
// don't allow multiple successive operators
while (start > 0 && "+-*/".indexOf(expr.charAt(start - 1)) != -1) {
--start;
}
// fall through
case '-':
// don't allow -- or +-
// SPRD 515934 enter all numbers and operators,calculator crash
if ((start > 0) && (start <= len) && "+-".indexOf(expr.charAt(start - 1)) != -1) {
--start;
}
// mark as edited since operators can always be appended
mIsEdited = true;
break;
default:
break;
}
if(expr.length()>0){
char mText=expr.charAt(expr.length()-1);
Boolean mBoolean =false;
if(!(mText==('0')||mText==('1')||mText==('2')||
mText==('3')||mText==('4')||mText==('5')||
mText==('6')||mText==('7')||mText==('8')||
mText==('9'))){
mBoolean=true;
}
android.util.Log.i("CalculatorExpressionBuilder","mBoolean="+mBoolean);
if(appendExpr.equals(".")&&mBoolean){
appendExpr="0.";
}
}else if(expr.length()==0&&appendExpr.equals(".")){
appendExpr="0.";
}
}
// since this is the first edit replace the entire string
if (!mIsEdited && appendExpr.length() > 0) {
start = 0;
mIsEdited = true;
}
appendExpr = mTokenizer.getLocalizedExpression(appendExpr);
return super.replace(start, end, appendExpr, 0, appendExpr.length());
}
android中自带计算器按.格式显示错误问题
最新推荐文章于 2021-07-25 00:52:28 发布
这篇博客主要讨论了在Android开发过程中遇到的自带计算器显示格式错误的问题,特别是涉及小数点显示的问题。通过修改CalculatorExpressionBuilder.java文件中的replace()方法,检查并修正了连续输入小数点或者在非数字后输入小数点的情况,确保计算器的正确显示。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
ACE-Step
音乐合成
ACE-Step
ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言
801

被折叠的 条评论
为什么被折叠?



