Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 温度转换器android应用程序_Java_Android_Button_Radio Button - Fatal编程技术网

Java 温度转换器android应用程序

Java 温度转换器android应用程序,java,android,button,radio-button,Java,Android,Button,Radio Button,这是我的代码,我不知道为什么计算按钮不起作用。这与我的onclick方法有关,但我不确定为什么它不起作用。我的应用程序在尝试打开时关闭。如果需要的话,我会附上我的日志。我很确定这是一个很容易修复的东西,因为我几乎完成了这个应用程序 package com.example.temperatureconverter; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import

这是我的代码,我不知道为什么计算按钮不起作用。这与我的onclick方法有关,但我不确定为什么它不起作用。我的应用程序在尝试打开时关闭。如果需要的话,我会附上我的日志。我很确定这是一个很容易修复的东西,因为我几乎完成了这个应用程序

package com.example.temperatureconverter;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;

import java.text.DecimalFormat;


public class Calculate extends Activity 
{
private EditText in, out;
private RadioButton rd1, rd2;
private Button btn1;
DecimalFormat f = new DecimalFormat("#.##");

//******************onCreate()*****************************
@Override
protected void onCreate(Bundle b) 
{
    super.onCreate(b);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_calculate);

    in = (EditText)findViewById(R.id.input);
    out =(EditText)findViewById(R.id.results);
    rd1 =(RadioButton)findViewById(R.id.radio1);
    rd2 =(RadioButton)findViewById(R.id.radio2);
    btn1 =(Button) findViewById(R.id.btn1);
}

//******************buttonClick()**********************
public void buttonClick(View v)
{
    double num = 0;
    switch(v.getId())
    {
        case R.id.radio1:
            if(rd1.isChecked())
            {
                rd1.setChecked(true);
            }
            break;
        case R.id.radio2:
            if(rd2.isChecked())
            {
                rd2.setChecked(true);
            }
            break;  
        case R.id.btn1:
            if(rd1.isChecked() == true)
            {
                num = Double.parseDouble(in.getText().toString());
                out.setText(String.valueOf(f.format(CelToF(num))));
            }
            else
            {
                num = Double.parseDouble(in.getText().toString());
                out.setText(String.valueOf(f.format(fToC(num))));
            }   
    }
}
//*****************CelToF()*****************************
public double CelToF(double num)
{
    return (9.0/5.0) * num + 32;
}

//*******************fToc()****************************
public double fToC(double num)
{
    return (num - 32) * 5.0/9.0;
}
}
这是我的原木猫

10-03 21:11:05.355:D/(2726):主机连接::get()新主机连接已建立0xb91314c0,tid 2726 10-03 21:11:05.425:W/EGL_仿真(2726):未实现eglSurfaceAttrib 10-03 21:11:05.435:D/OpenGLRenderer(2726):启用调试模式0 10-03 21:11:05.605:D/dalvikvm(2726):释放57K的所有数据的GC_,4%释放3327K/3448K,暂停42毫秒,总计45毫秒 10-0321:11:10.025:D/AndroidRuntime(2726):关闭虚拟机 10-03 21:11:10.035:W/dalvikvm(2726):threadid=1:线程退出时出现未捕获异常(组=0xadb03ba8) 10-0321:11:10.115:E/AndroidRuntime(2726):致命异常:主 10-0321:11:10.115:E/AndroidRuntime(2726):进程:com.example.temperatureconverter,PID:2726 10-03 21:11:10.115:E/AndroidRuntime(2726):java.lang.IllegalStateException:无法执行活动的方法 10-0321:11:10.115:E/AndroidRuntime(2726):在android.view.view$1.onClick(view.java:3823) 10-0321:11:10.115:E/AndroidRuntime(2726):在android.view.view.performClick(view.java:4438) 10-0321:11:10.115:E/AndroidRuntime(2726):在android.view.view$PerformClick.run(view.java:18422) 10-0321:11:10.115:E/AndroidRuntime(2726):在android.os.Handler.handleCallback(Handler.java:733)上 10-0321:11:10.115:E/AndroidRuntime(2726):在android.os.Handler.dispatchMessage(Handler.java:95)上 10-0321:11:10.115:E/AndroidRuntime(2726):在android.os.Looper.loop(Looper.java:136) 10-0321:11:10.115:E/AndroidRuntime(2726):在android.app.ActivityThread.main(ActivityThread.java:5017)上 10-0321:11:10.115:E/AndroidRuntime(2726):位于java.lang.reflect.Method.Invokenactive(本机方法) 10-0321:11:10.115:E/AndroidRuntime(2726):在java.lang.reflect.Method.invoke(Method.java:515) 10-03 21:11:10.115:E/AndroidRuntime(2726):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 10-0321:11:10.115:E/AndroidRuntime(2726):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 10-03 21:11:10.115:E/AndroidRuntime(2726):在dalvik.system.NativeStart.main(本机方法) 10-0321:11:10.115:E/AndroidRuntime(2726):由以下原因引起:java.lang.reflect.InvocationTargetException 10-0321:11:10.115:E/AndroidRuntime(2726):位于java.lang.reflect.Method.Invokenactive(本机方法) 10-0321:11:10.115:E/AndroidRuntime(2726):在java.lang.reflect.Method.invoke(Method.java:515) 10-0321:11:10.115:E/AndroidRuntime(2726):在android.view.view$1.onClick(view.java:3818) 10-0321:11:10.115:E/AndroidRuntime(2726):。。。还有11个 10-03 21:11:10.115:E/AndroidRuntime(2726):原因:java.lang.ClassCastException:android.widget.Button无法转换为android.widget.RadioButton 10-0321:11:10.115:E/AndroidRuntime(2726):在com.example.temperatureconverter.Calculate.button点击(Calculate.java:55)
10-0321:11:10.115:E/AndroidRuntime(2726):。。。14更多

使用值初始化onCreate上的
num
,而不是尝试从文本视图解析不存在的值

因此,与此相反:

num = Double.parseDouble(in.getText().toString());
只要做:

num = 0;
或者,如果您不希望零成为初始值,就不要初始化它。并在onClick之后正确填充num


此外,您不需要手动取消选中复选框,如果您将它们包装在一个

中,android会为您执行此操作。请尝试删除parseDouble中的.tostring。请发布stacktrace。“如果需要,我将包括我的logcat。”当您的应用程序崩溃时,它总是非常有用。另外,将解析代码封装在
try/catch
中总是一个好主意。等等……你是说他应该为他的变量使用一些任意值,而不是他需要的值吗?我还错过了他取消选中任何框的地方。复选框通常不应该在
RadioGroup
中,因为这不是用户希望它们工作的方式。根本不是,我只是指出他没有正确初始化他的值。实际上,根本不需要初始化,因为在用户实际单击按钮之前,他不会使用num。好的,我在
onCreate()
中错过了它。我以为您指的是在
onClick()中完成的位置