我是一个真正的NOOB和新的编码员。我开始学习Java,最近在eclipse上创建了这个应用程序。它是一美元到欧元的转换器。每当我尝试在eclipse上运行代码时,我都会收到错误消息,说应用程序已经停止工作。
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));
}
}
答案 0 :(得分:1)
没有logcat它只是一个有根据的猜测,但看看这一行:
etod = (RadioButton)this.findViewById(R.id.euros);
你确定你使用的是正确的身份证吗?它与您用于上面TextView
的那个相同。您可能会抛出ClassCastException
,因为您尝试将其用作RadioButton
。
无关,但您的转换逻辑似乎也是错误的。您不能指望转化的两个都是(val * 0.67)
。
答案 1 :(得分:0)
没有logcat就很难猜到。但我认为有一个NPE被抛出。很可能是来自
dollars.getText().toString()
和
euros.getText().toString()
我建议您在应用.toString()之前包含空检查。
答案 2 :(得分:0)
我建议去Window>显示视图>控制台,根据错误,它有时会为您提供指向导致问题的类中的行的链接。