【问题标题】:My Android Compound Interest Calculator keeps crashing我的 Android 复利计算器不断崩溃
【发布时间】:2012-02-11 06:44:13
【问题描述】:
package dum.de.dum;

import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.os.Bundle;

正常进口?

public class CalcActivity extends Activity {


    Button finish;
    double total;
    double interest2;
    double time2;
    double base2;


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




        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        finish = (Button) findViewById(R.id.total);
        finish.setOnClickListener(new OnClickListener(){
            public void onClick(View V) {

                EditText base;
                base = (EditText) findViewById(R.id.base);
                String baseValue = base.getText().toString();
                double BaseNum = Double.parseDouble(baseValue);

                EditText interest;
                interest = (EditText) findViewById(R.id.interest);
                String interestValue = interest.getText().toString();
                double interestNum = Double.parseDouble(interestValue);

                EditText time;
                time = (EditText) findViewById(R.id.time);
                String timeValue = time.getText().toString();
                double timeNum = Double.parseDouble(timeValue);

                double total = BaseNum * Math.pow(interestNum + 1, timeNum);        

我听说人们在解析数字时遇到了麻烦,所以我不确定这是否是个问题,如果是,我不知道如何解决它

        EditText Output;
        Output = (EditText) findViewById(R.id.total);
        Output.setText("Your total is: " + total);

        };

    });
}
}

每次我尝试在模拟器中运行它时,我都会立即强制关闭。我是一个新手程序员,我在 eclipse 中没有收到任何错误代码。

【问题讨论】:

    标签: java android crash


    【解决方案1】:
    finish = (Button) findViewById(R.id.total);
    

    finish 按钮的 id 不是 R.id.total - 根据这个,这是一个 EditText...

    Output = (EditText) findViewById(R.id.total);
    

    当您尝试使用该 ID 查找按钮时,您将收到 ClassCastException。

    【讨论】:

    • 哇,完全没有注意到。
    • @SmartLemon:我花了一点时间才这样做。 :D
    • 由于那部分代码都被弄乱了,所以有点难以注意到。 D:
    【解决方案2】:

    尝试替换

    Output.setText("Your total is: " + total);
    

    与:

    Output.setText("Your total is: " + String.valueOf(total));
    

    【讨论】:

    • 两者相同是什么意思?它们有明显的区别
    • 是空异常还是什么?它在错误中说了什么?通常前几条红色日志会告诉你
    • 02-11 06:55:16.852:E/AndroidRuntime(292):未捕获的处理程序:线程主因未捕获的异常而退出 02-11 06:55:16.862:E/AndroidRuntime(292): java.lang.RuntimeException: 无法启动活动 ComponentInfo{dum.de.dum/dum.de.dum.CalcActivity}: java.lang.ClassCastException: android.widget.EditText 02-11 06:55:16.862: E/AndroidRuntime (292): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
    • @Jake 看到我的回答 - 我已经解释过它会是 ClassCastException
    • @SmartLemon:您建议替换的第一行在将数字数据类型的值连接到字符串的上下文中可以正常工作。在这种情况下,它将作为连接过程的一部分被隐式转换。
    【解决方案3】:

    你可以看到错误,通过 menu->window->showView->logcat 在 eclipse 中打开视图,

    根据您的描述,该应用程序在您启动 Activity 后立即崩溃,问题区域可能是:

    finish = (Button) findViewById(R.id.total);
            finish.setOnClickListener(new OnClickListener(){
    

    在 main.xml 中检查一次按钮 id 为-> android:id/total

    【讨论】:

      【解决方案4】:

      您还应该向我们展示 Xml 布局文件,因为您首先将完成作为按钮,然后分配按钮编辑文本。 R.id.total 是 xml 文件中的按钮或编辑文本,如果它是按钮,则必须在其 in 上使用 edittext 框 id

      Output = (EditText) findViewById(R.id.(edittext button id));
      

      然后该值将显示在编辑文本框中。

      【讨论】:

        猜你喜欢
        • 2015-04-30
        • 2018-02-12
        • 2016-11-26
        • 2013-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多