0

我一直在尝试学习 Java 进行 Android 开发,所以我决定尝试制作一个简单的转换器应用程序来学习。目前我有一个简单的用户界面,我正在尝试从摄氏度转换为华氏度。转换器将在工作时在摄氏度、华氏度和开尔文之间转换。

当我单击应该运行计算方法的按钮时,我收到错误“不幸的是,转换器已停止”。下面是我的代码,我还包含了视图的 XML。

    包 com.michaelmurphy.converter;

    导入android.app.Activity;
    导入android.os.Bundle;
    导入 android.widget.EditText;
    导入 android.widget.Spinner;

    公共类温度扩展活动{

        /** 在第一次创建活动时调用。*/
        @覆盖
        public void onCreate(Bundle savedInstanceState)
        {

            super.onCreate(savedInstanceState);
            设置内容视图(R.layout.temperature_view);

            // TODO 自动生成的方法存根
        }

        公共无效临时计算()
        {
            //定义变量
            浮点值 = 0;
            String from = "";//用于微调器
            String to = "";//用于微调器

            //获取输入值
            EditText 输入 = (EditText) findViewById(R.id.editText1);
            //转换为字符串
            字符串输入值 = input.getText().toString();
            //将字符串转换为浮点数
            浮点数 = Float.valueOf(enteredValue);

            //从微调器中获取值
            final Spinner fromSpinner = (Spinner) findViewById(R.id.spinner1);
            从 = fromSpinner.getSelectedItem().toString();    
            //检索到微调器值
            最终微调器 toSpinner = (Spinner) findViewById(R.id.spinner1);
            to = toSpinner.getSelectedItem().toString();

            EditText 输出 = (EditText) findViewById(R.id.textView2);

            /*if(from.equals(to)) //相同的转换类型
            {
                //错误
            }*/

            if(from.equals("摄氏度"))
            {
                if(to.equals("华氏度"))
                {
                    值 = celToFar(num);
                }
                别的
                {
                    //值 = celToKel(num);
                }
            }
            else if(from.equals("Fahrenheit"))
            {
                if(to.equals("摄氏度"))
                {
                    //值 = fahToCel(num);
                }
                别的
                {
                    //值 = fahToKel(num);
                }
            }
            否则//开尔文
            {
                if(to.equals("摄氏度"))
                {
                    //值 = kelToCel(num);
                }
                别的
                {
                    //值 = kelToFah(num);
                }
            }

            //将标签设置为变量值
            String valueStr = Float.toString(value);//将浮点数转换为字符串
            output.setText(valueStr);
        }

        公共浮动 celToFar(浮动 cel)
        {
            浮动法 = cel * 9/5 + 32;
            返回 fah;
        }

    }

查看 XML 代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="numberDecimal" >

        <requestFocus />
    </EditText>

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/temp_arr" />

    <Spinner
        android:id="@+id/spinner2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/temp_arr" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/convertBtn"
        android:onClick="tempCalc" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

有没有人能指出我哪里出错了,我不知道。谢谢

4

1 回答 1

7

改变:

public void tempCalc()

public void tempCalc(View v)

任何 onClick 方法都需要一个View参数。由于您没有通过,因此方法签名不匹配,并且您的应用程序会引发异常。

于 2013-01-18T21:38:04.037 回答