0

私は Android 開発のために Java を学ぼうとしてきたので、簡単なコンバーター アプリケーションを作成して学習することにしました。現在、私はシンプルな UI を持っており、摂氏から華氏に変換しようとしています。コンバーターは、機能すると、摂氏、華氏、ケルビンの間で変換します。

計算メソッドを実行するはずのボタンをクリックすると、「残念ながら、コンバーターが停止しました」というエラーが表示されます。以下は私のコードです。ビューの XML も含めました。

    パッケージ com.michaelmurphy.converter;

    android.app.Activity をインポートします。
    android.os.Bundle をインポートします。
    android.widget.EditText をインポートします。
    android.widget.Spinner をインポートします。

    公開クラス 温度はアクティビティを拡張します {

        /** アクティビティが最初に作成されたときに呼び出されます。*/
        @オーバーライド
        public void onCreate(Bundle savedInstanceState)
        {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.temperature_view);

            // TODO 自動生成メソッド スタブ
        }

        public void tempCalc()
        {
            //変数を定義する
            フロート値 = 0;
            String from = "";//スピナー用
            String to = "";//スピナー用

            // 入力値を取得
            EditText 入力 = (EditText) findViewById(R.id.editText1);
            //文字列に変換
            String enterValue = input.getText().toString();
            // 文字列を float に変換
            float num = Float.valueOf(enteredValue);

            // スピナーの値を取得する
            最終スピナー fromSpinner = (スピナー) findViewById(R.id.spinner1);
            from = fromSpinner.getSelectedItem().toString();    
            // to スピナーの値を取得します
            最終スピナー toSpinner = (スピナー) 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(数値);
                }
                そうしないと
                {
                    //値 = celToKel(数値);
                }
            }
            else if(from.equals("華氏"))
            {
                if(to.equals("摂氏"))
                {
                    //value = fahToCel(num);
                }
                そうしないと
                {
                    //値 = fahToKel(数値);
                }
            }
            そうでなければ//ケルビン
            {
                if(to.equals("摂氏"))
                {
                    //値 = kelToCel(数値);
                }
                そうしないと
                {
                    //値 = kelToFah(数値);
                }
            }

            //ラベルを変数値に設定
            String valueStr = Float.toString(value);// float を文字列にキャストする
            output.setText(valueStr);
        }

        public float celToFar(float cel)
        {
            float fah = セル * 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パラメーターが必要です。1 つを渡さないと、メソッド シグネチャが一致せず、アプリは例外をスローします。

于 2013-01-18T21:38:04.037 に答える