当前位置: 首页 > 知识库问答 >
问题:

学习Android Java-应用程序失败

高峻
2023-03-14

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

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


    package com.michaelmurphy.converter;

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.EditText;
    import android.widget.Spinner;

    public class Temperature extends Activity {

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {

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

            // TODO Auto-generated method stub
        }

        public void tempCalc()
        {
            //define variables
            float value = 0;
            String from = "";//for spinner
            String to = "";//for spinner

            //get entered value
            EditText input = (EditText) findViewById(R.id.editText1);
            //convert to string
            String enteredValue = input.getText().toString();
            //convert string into float
            float num = Float.valueOf(enteredValue);

            //retrieve the from spinner value
            final Spinner fromSpinner = (Spinner) findViewById(R.id.spinner1);
            from = fromSpinner.getSelectedItem().toString();    
            //retrieve the to spinner value
            final Spinner toSpinner = (Spinner) findViewById(R.id.spinner1);
            to = toSpinner.getSelectedItem().toString();

            EditText output = (EditText) findViewById(R.id.textView2);

            /*if(from.equals(to)) //the same conversion type
            {
                //error
            }*/

            if(from.equals("Celcius"))
            {
                if(to.equals("Fahrenheit"))
                {
                    value = celToFar(num);
                } 
                else 
                {
                    //value = celToKel(num);
                }
            }
            else if(from.equals("Fahrenheit"))
            {
                if(to.equals("Celcius"))
                {
                    //value = fahToCel(num);
                } 
                else 
                {
                    //value = fahToKel(num);
                }
            }
            else //kelvin
            {
                if(to.equals("Celcius"))
                {
                    //value = kelToCel(num);
                }
                else 
                {
                    //value = kelToFah(num);
                }
            }

            //set the label to variable value
            String valueStr = Float.toString(value);//cast float to string
            output.setText(valueStr);
        }

        public float celToFar(float cel)
        {
            float fah = cel * 9/5 + 32;
            return 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>

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

共有1个答案

林俊英
2023-03-14

更改:

public void tempCalc()

public void tempCalc(View v)

任何onClick方法都需要view参数。如果您没有传递一个,则方法签名不匹配,并且您的应用程序会抛出一个异常。

 类似资料:
  • 在 2019 年 5 月发行的 Lightroom mobile(版本 4.3)中已引入 Lightroom 不仅能够让您能够直接在应用程序内创建精美的图像和表现丰富的想象力,而且还可以帮助您成为一名优秀的摄影师,通过给各种全新的方式来获得灵感和提高您的技能。您可以获得实际操作体验:通过一系列强大的交互式教程,学习如何使照片呈现最佳的效果。您还可以浏览其他摄影成员不同类别且富有灵感的照片,点按这些

  • 在 2019 年 5 月发行的 Lightroom 桌面版(版本 2.3)中已引入 Lightroom 不仅能够让您能够直接在应用程序内创建精美的图像和表现丰富的想象力,而且还可以帮助您成为一名优秀的摄影师,通过给各种全新的方式来获得灵感和提高您的技能。您可以参照关于如何提升照片质量的引导式分步教程,学习 Lightroom 基础知识。您还可以获得实际操作体验:通过一系列强大的交互式教程,学习如何

  • 1.简介 Qt Demo 是 Qt 套件之一,它包含了大量的演示和示例程序,基本涵盖了 Qt 编程中的 主要类别,将它与 Qt Assistant 结合使用能够收到很好的效果。 2.运行 Qt Demo 要运行 Qt Demo,在 Windows 下,如果是可依次单击【开始】→【(所有)程序】→【Qt SDK by Nokia v2009.03(OpenSource)】→【Qt Demo】;在 X

  • 我运行< code>heroku open时出现应用程序错误。我查了日志,这是: 2016-06-19T05:22:44.640391 00:00 heroku[路由器]:at=错误代码=H10 desc=“应用程序崩溃”方法=获取路径=“/”主机=drawparty-.herokuapp。com request_id=6712804b-95f9-49ce-92a5-7f45df7bb79e fw

  • 本文向大家介绍Android学习之使用SharedPreferences存储应用程序数据,包括了Android学习之使用SharedPreferences存储应用程序数据的使用技巧和注意事项,需要的朋友参考一下 本文介绍了SharedPreferences保存应用程序数据的具体步骤,供大家参考,具体内容如下 1、SharedPreferences的简单介绍 应用程序在运行的时候,可能会随着用户的使

  • 我正在尝试用glew/glfw构建一个OpenGL应用程序。我下载了二进制文件,将它们放在文件夹的根目录中,将路径添加到include和lib目录,并告诉我的项目需要glew32。lib,GLFW。lib和opengl32。lib。 我甚至复制了glew32。因为我的项目看不到,所以将lib添加到根目录。 我必须保留项目目录中的所有依赖项,因为我将分发它。我不知所措。 现在,当我运行我的程序时,它