2013-01-17 82 views
0

我是一個真正的NOOB和新的編碼器。我開始學習Java,最近在eclipse上創建了這個應用程序。這是一個兌換歐元的美元。每次我嘗試在eclipse上運行代碼時,出現錯誤,說應用程序已停止工作。不幸的是你的<Project name>已停止工作。

TextView dollars; 
TextView euros; 
RadioButton dtoe; 
RadioButton etod; 
Button calculate; 



public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    dollars = (TextView)this.findViewById(R.id.dollars); 
    euros = (TextView)this.findViewById(R.id.euros); 

    dtoe = (RadioButton)this.findViewById(R.id.dtoe); 
    etod = (RadioButton)this.findViewById(R.id.euros); 

    calculate = (Button)this.findViewById(R.id.calculate); 
    calculate.setOnClickListener(this); 

} 

public void onClick(View v) { 

    if (dtoe.isChecked()){ 
     convertDollarsToEuros(); 
    } 
    if (etod.isChecked()){ 
     convertEurosToDollars(); 
    } 
} 

protected void convertDollarsToEuros(){ 

    double val = Double.parseDouble(dollars.getText().toString()); 
    euros.setText(Double.toString(val*0.67)); 
} 

protected void convertEurosToDollars(){ 
    double val = Double.parseDouble(euros.getText().toString()); 
    dollars.setText(Double.toString(val*0.67)); 
} 

}

+2

您的代碼在某處引發異常。查看logcat輸出(使用Window - > Show View打開視圖,如果它尚未顯示)。應該有一個例外顯示問題發生的地方。使用模擬器而不是真實設備來做到這一點最簡單。 –

+0

嘗試在convertDollarsToEuros()和convertEurosToDollars()轉換爲String之前對getText()進行空值檢查。並且確保在RadioGroup中使用兩個RadioButton。 – jettimadhuChowdary

回答

1

沒有,這只是一個猜測的logcat的,但看這條線:

etod = (RadioButton)this.findViewById(R.id.euros); 

你確定你使用正確的ID?它與上面使用的TextView相同。您可能會投擲ClassCastException,因爲您試圖將其作爲RadioButton使用。

無關,但您的轉換邏輯似乎也是錯誤的。您不能指望的轉換爲(val * 0.67)

0

沒有logcat就很難猜測。但我認爲有一個NPE被拋出。最有可能是從

dollars.getText().toString() 

euros.getText().toString() 

我建議你到包括空檢查之前申請的ToString()。

0

我建議去窗口>顯示視圖>控制檯,這取決於錯誤,它有時會給你鏈接到導致問題的類中的行。

相關問題