简单的Android方法崩溃..为什么?

时间:2015-08-29 02:17:39

标签: java android

我是一名新程序员,我只了解Java / Android编程的基础知识。我正在尝试制作一个将华氏温度转换为摄氏温度的基本应用程序。我编写了方法来做它,将它连接到一个按钮,我的应用程序崩溃。我似乎无法找到错误和/或另一种方法。我想知道是否有人知道导致坠机的原因以及他们是否可以告诉我将来如何避免它。这对我和初学Java程序员都有好处。

这是我的Java代码:

    public void appControl (View view){

    EditText giveFarenheit = (EditText) findViewById(R.id.farenheit_int);
    String oldFarenheitString = giveFarenheit.getText().toString();
    int oldFarenheit=Integer.parseInt(oldFarenheitString);
    int step1 = oldFarenheit - 32;
    int newCelcius = step1*5/9;
    EditText giveCelcius = (EditText) findViewById(R.id.celcius_int);
        giveCelcius.setHint(oldFarenheit);

}

这是崩溃的日志:

08-28 22:07:55.384  14825-14825/com.paulrotman.tempconverterfree E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.paulrotman.tempconverterfree, PID: 14825
java.lang.IllegalStateException: Could not execute method of the activity
        at android.view.View$1.onClick(View.java:4247)
        at android.view.View.performClick(View.java:5191)
        at android.view.View$PerformClick.run(View.java:20916)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:145)
        at android.app.ActivityThread.main(ActivityThread.java:5972)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
 Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at android.view.View$1.onClick(View.java:4242)

在android.view.View.performClick(View.java:5191)

3 个答案:

答案 0 :(得分:2)

你的这一行导致错误,我想:

giveCelcius.setHint(oldFarenheit);

这只是因为你把整数作为参数而不是CharacterSequence[](我猜);所以只需添加+""使其成为String,您的代码就可以运行。

...

giveCelcius.setHint(oldFarenheit+"");

答案 1 :(得分:1)

改变这一点。

  

(EditText)view.findViewById(R.id.farenheit_int);

public void appControl (View view){
   EditText giveFarenheit = (EditText) view.findViewById(R.id.farenheit_int);
   String oldFarenheitString = giveFarenheit.getText().toString();
   int oldFarenheit=Integer.parseInt(oldFarenheitString);
   int step1 = oldFarenheit - 32;
   int newCelcius = step1*5/9;
   EditText giveCelcius = (EditText) view.findViewById(R.id.celcius_int);
   giveCelcius.setHint(String.ValueOf(oldFarenheit));
}

答案 2 :(得分:0)

不要在方法中初始化EditText giveFarenheit。 而不是这样做

这样做 EditText给予Farenheit;方法之上

giveFarenheit =(EditText)findViewById(R.id.farenheit_int); 它可能会解决问题

请参阅下面的链接 Android java.lang.IllegalStateException: Could not execute method of the activity