将Math.log应用于EditText

时间:2015-09-03 06:28:50

标签: java android user-interface math android-edittext

我在以下代码实现中遇到错误。

Math无法应用于android.widget.EditText

然后,我搜索了该问题并找到了一个链接Math with an integer obtained from an EditText。 我试着编辑相关的代码。但是,我还没有解决我的问题。

这是我各自班级活动的用户界面。你可以看到,我将从微调器中选择各自的模型并给出4个不同的输入。

enter image description here

接下来是我的代码的一些部分:

    @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;

2 个答案:

答案 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