2012-02-21 33 views
-4

为什么我的应用程序崩溃?我正在使用eclipse。我不明白为什么它会崩溃。一切对我来说都很好。我看到的没有缺失的半角。为什么我的Android计算器崩溃?

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

从崩溃中发布stacktrace。否则,我们不知道从哪里开始寻找。 – 2012-02-21 21:43:51

+1

发布logcat stacktrace。 – kosa 2012-02-21 21:44:01

+0

如何发布logstacktrace? – recheej 2012-02-21 21:53:29

回答

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(""); 
    } 
0

我猜你会得到一个NullPointerException。

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

该行实际上是宣告你的HelloAndroidActivity类,其中,当初始化尝试,指的是display,这是空的实例成员。

0

我认为onCreatemethod你应该增加后:

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

这样的:

display.setOnClickListener(this);  

,你也应该增加最终是这样的:

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);

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() 
    } 


...