为什么我的Android计算器会崩溃?

时间:2012-02-21 21:42:24

标签: java android

为什么我的应用程序崩溃了?我正在使用eclipse。我不明白为什么它会崩溃。对我来说一切似乎都很好。我看到没有丢失的半连枷。

package rechee.cool;

import android.app.Activity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;




public class HelloAndroidActivity extends Activity {
    /** Called when the activity is first created. */
    public EditText display;

    double total1=0;
    double total2=0;
    char theOperator;       

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);    
        display= (EditText) findViewById(R.id.editText1);
    }

    String display1= display.getText().toString();


    public void getOperator(String btnText){
        theOperator = btnText.charAt(0);
        double displayValue= Double.parseDouble(display1);
        total1+=displayValue;
        display.setText("");
    }

    public void onClick(View v) {
        switch(v.getId()){
            case R.id.bOne:
            display.append("1");
            break;
        case R.id.bTwo:
            display.append("2");
            break;
        case R.id.bThree:
            display.append("3");
            break;
        case R.id.bFour:
            display.append("4");
            break;
        case R.id.bFive:
            display.append("5");
            break;
        case R.id.bSix:
            display.append("6");
            break;
        case R.id.bSeven:
            display.append("7");
            break;
        case R.id.bEight:
            display.append("8");
            break;
        case R.id.bNine:
            display.append("9");
            break;
        case R.id.bZero:
            display.append("0");
            break;
        case R.id.bPoint:
            display.append(".");
            break;
        case R.id.bClear:
            display.setText("");
            break;
        case R.id.bAdd:
            String btn_text= (String) getText(R.id.bAdd);
            display.setText(btn_text);
            //getOperator(display1);
            break;
            //case R.id.bEqual:
        }
    }
}

4 个答案:

答案 0 :(得分:0)

老兄,你必须发布stackface。当没有堆栈跟踪时我的脸 - > :|

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    display= (EditText) findViewById(R.id.editText1);} // <--This curly brace is probably the problem
    String display1= display.getText().toString();




    public void getOperator(String btnText){
        theOperator = btnText.charAt(0);
        double displayValue= Double.parseDouble(display1);
        total1+=displayValue;
        display.setText("");
    }

答案 1 :(得分:0)

我猜你得到了NullPointerException。

String display1= display.getText().toString(); 

该行实际上是声明HelloAndroidActivity类的实例成员,当尝试初始化时,该成员指的是display,它是空的。

答案 2 :(得分:0)

我认为onCreatemethod你应该添加:

display= (EditText) findViewById(R.id.editText1);

这样:

display.setOnClickListener(this);    

你还应该像这样添加final:

final public EditText display;

final double total1=0;
final double total2=0;
final char theOperator;  
final String display1= display.getText().toString();

尝试对getOperator方法进行注释,看看是否有效。哦,正如GriffeyDog说你那里有一个很大的错误。在绘制屏幕后获取文本,例如。后:

display= (EditText) findViewById(R.id.editText1);

答案 3 :(得分:0)

这样做。

...

 String display1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);    
        display= (EditText) findViewById(R.id.editText1);
        display1= display.getText().toString()
    }


...