我在以下代码实现中遇到错误。
Math无法应用于android.widget.EditText
然后,我搜索了该问题并找到了一个链接Math with an integer obtained from an EditText。 我试着编辑相关的代码。但是,我还没有解决我的问题。
这是我各自班级活动的用户界面。你可以看到,我将从微调器中选择各自的模型并给出4个不同的输入。
接下来是我的代码的一些部分:
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String tDistance = distanceEdit.getText().toString();
String freqStr = freqEdit.getText().toString();
String tBase = tHeightEdit.getText().toString();
String rMobile = rHeightEdit.getText().toString();
double distance = Double.parseDouble(!tDistance.isEmpty() ? tDistance : "0");
double frequency = Double.parseDouble(!freqStr.isEmpty() ? freqStr : "0");
//double frequency = Double.parseDouble(freqStr);
double baseHeight = Double.parseDouble(!tBase.isEmpty() ? tBase : "0");
double mobileHeight = Double.parseDouble(!rMobile.isEmpty() ? rMobile : "0");
if(v == calButton) {
//String freqStr = freqEdit.getText().toString();
if(freqStr != null && !freqStr.isEmpty()) {
mResult=69.55+26.16*Math.log(frequency)-13.82*Math.log(baseHeight)-antennaFac+(44.9-6.55*Math.log(baseHeight))*Math.log(distance);
}
} else
if(v == clearButton) {
}
}
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
switch(arg2) {
case 0:
antennaFac = (1.1*Math.log(freqEdit)-0.7)*rHeightEdit-(1.56*Math.log(freqEdit)-0.8);//Error from freqEdit - Math cannot be applied to android.widget.EditText
//Error when trying to use frequency variable - Unable to resolve symbol
break;
case 1:
break;
case 2:
break;
case 3:
break;
}
}
我的问题是当前在onItemSelected方法中,我的freqEdit参数显示了我在上面突出显示的错误。根据我自己的理解,它应该是已经在OnClick方法中声明的频率变量。但是,它表示&#34;无法解决符号&#39;频率&#39;&#34;
答案 0 :(得分:1)
您已在frequency
函数中声明了onClick
变量,onItemSelected
的范围完全不同。
将“频率”声明为会员类,并在onClick
中更新其值,然后您就可以在onItemSelected
方法中使用它了。
希望有所帮助
修改强>
您还可以重新计算执行以下语句的frequency
方法中的onClick
值。
String freqStr = freqEdit.getText().toString();
double frequency = Double.parseDouble(!freqStr.isEmpty() ? freqStr : "0");
答案 1 :(得分:0)
你在做什么:
case 0:
您正尝试对查看元素执行数学操作,这不是有效操作。
可能的解决方案:
而不是freqEdit
你必须使用freqStr
(这只是该编辑文本的价值)
注意:确保您将字符串转换为double 要将字符串转换为double,请按照此this。