2012-02-21 28 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() 
    } 


...