Java Android应用计算器在启动时退出

Java Android应用计算器在启动时退出,java,android,eclipse,calculator,Java,Android,Eclipse,Calculator,我一直在尝试编写一个简单的体重指数计算器作为我的第一个应用程序。我使用的是一个过时的教程,并不是第一个在运行我的应用程序时遇到问题的人(当我尝试运行它时,它只会退出),但其他人的建议似乎并没有帮到我。我不知道出了什么问题,所以请帮我解决这个问题,并指出出了什么问题,这样我就不会重复我的错误 这是我的密码: import android.app.Activity; import android.graphics.Typeface; import android.os.Bundle; import

我一直在尝试编写一个简单的体重指数计算器作为我的第一个应用程序。我使用的是一个过时的教程,并不是第一个在运行我的应用程序时遇到问题的人(当我尝试运行它时,它只会退出),但其他人的建议似乎并没有帮到我。我不知道出了什么问题,所以请帮我解决这个问题,并指出出了什么问题,这样我就不会重复我的错误

这是我的密码:

import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

 int cm,kg,bmi,cm2;
 Button wsub10,wsub1,wadd1,wadd10,hsub10,hsub1,hadd1,hadd10,calcbmi;
 TextView displaybmi,h,w;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    cm = 170;
    cm2 = 0;
    kg = 60;
    bmi = 0;
    displaybmi = (TextView) findViewById(R.id.TextView04);
    h = (TextView) findViewById(R.id.TextView01);
    w = (TextView) findViewById(R.id.TextView03);

    Typeface tf = Typeface.createFromAsset(getAssets(),
            "fonts/lucida.ttf");
    //set typeface for all text
    TextView tv = (TextView) findViewById(R.id.textView00);
    tv.setTypeface(tf);
    TextView tv1 = (TextView) findViewById(R.id.TextView01);
    tv1.setTypeface(tf);
    TextView tv2 = (TextView) findViewById(R.id.TextView02);
    tv2.setTypeface(tf);
    TextView tv3 = (TextView) findViewById(R.id.TextView03);
    tv3.setTypeface(tf);
    TextView tv4 = (TextView) findViewById(R.id.TextView04);
    tv4.setTypeface(tf);
    TextView tv5 = (TextView) findViewById(R.id.TextView05);
    tv5.setTypeface(tf);
    TextView tv6 = (TextView) findViewById(R.id.TextView06);
    tv6.setTypeface(tf);
    TextView tv7 = (TextView) findViewById(R.id.TextView07);
    tv7.setTypeface(tf);
    TextView tv8 = (TextView) findViewById(R.id.TextView08);
    tv8.setTypeface(tf);
    TextView tv9 = (TextView) findViewById(R.id.TextView09);
    tv9.setTypeface(tf);
    TextView tv10 = (TextView) findViewById(R.id.TextView10);
    tv10.setTypeface(tf);
    TextView tv11 = (TextView) findViewById(R.id.TextView11);
    tv11.setTypeface(tf);
    TextView tv12 = (TextView) findViewById(R.id.TextView12);
    tv12.setTypeface(tf);

    //introduce buttons and what they do
    //weight buttons
    wsub10 = (Button) findViewById(R.id.ImageView07);
    wsub10.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            kg -= 10;
            w.setText("" + kg);
        }
    });
    wsub1 = (Button) findViewById(R.id.ImageView08);
    wsub1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            kg -= 1;
            w.setText("" + kg);
        }
    });
    wadd1 = (Button) findViewById(R.id.ImageView09);
    wadd1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            kg += 1;
            w.setText("" + kg);
        }
    });
    wadd10 = (Button) findViewById(R.id.ImageView10);
    wadd10.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            kg += 10;
            w.setText("" + kg);
        }
    });
    //height buttons
    hsub10 = (Button) findViewById(R.id.imageView2);
    hsub10.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            cm -= 10;
            h.setText("" + cm);
        }
    });
    hsub1 = (Button) findViewById(R.id.ImageView02);
    hsub1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            cm -= 1;
            w.setText("" + cm);
        }
    });
    hadd1 = (Button) findViewById(R.id.ImageView03);
    hadd1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            cm += 1;
            w.setText("" + cm);
        }
    });
    hadd10 = (Button) findViewById(R.id.ImageView04);
    hadd10.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            cm += 10;
            w.setText("" + cm);
        }
    });
    //introduce button for bmi kg/cm^2
    calcbmi = (Button) findViewById(R.id.imageView3);
    calcbmi.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            cm2 = cm * cm;
            bmi = kg/cm2;
            displaybmi.setText("Your BMI is " + bmi);
        }
    });
}

}您没有提供stacktrace,所以,
让我猜一下

我试图解决您的问题:

  • 您将
    图像视图
    转换为
    按钮
    ,但在
    视图
    继承权中,
    文本视图
    按钮
    的父级,而
    图像视图
    的父级是
    视图
    。 查看->文本查看->按钮

    同时

    视图->图像视图

  • 张贴你的日志
    一个错误是您试图将ImageView强制转换为按钮

    wsub10 = (Button) findViewById(R.id.ImageView07);
    
    应该是

    wsub10 = (ImageView) findViewById(R.id.ImageView07);
    

    您的
    onClick()
    是否在
    onCreate()中?看起来是这样的,但不应该是这样。难道你不能提供你在LogCat中得到的异常/行号吗?发布一些LogCat日志,看看问题出在哪里以及你的activity_main.xml。我假设它在某个地方calcbmi=(按钮)findviewbyd(R.id.imageView3);谢谢,这似乎是最大的问题-应用程序现在启动没有问题。