我在Android应用程序中遇到问题。我正在创建货币转换器。我需要创建一个progressdialog,当您将值从一种货币转换为另一种货币时出现。我已经发现我需要通过处理程序传递我的值,但我不知道如何做到这一点。
以下是我的代码的一部分:
if (text1.equals("US Dollar - USD") && text2.equals("Euro - EUR") && edittextdollars.length() > 0 && edittexteuros.length()==0) {
dialog1 = ProgressDialog.show(getActivity(), "", "Calculating...");
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try{
convertvalues("USD", "EUR");
handler.sendEmptyMessage(0);
}
catch (Exception e) {
edittexteuros.setText("Error");
}
}
});
thread.start();
}
public String convertvalues(String convertfrom, String convertto) {
double current;
double val = Double.parseDouble(edittextdollars.getText().toString());
DecimalFormat df = new DecimalFormat(".##");
YahooCurrencyConverter ycc = new YahooCurrencyConverter();
try {
current = ycc.convert(convertfrom, convertto);
edittexteuros.setText(df.format(val*current));
return "passed";
}
catch (Exception e) {
return "passed";
}
private Handler handler = new Handler () {
public void handleMessage(android.os.Message msg) {
dialog1.dismiss();
}
}
};
progressdialog出现并消失,但后台没有任何反应。以下是我的应用程序的几个图片:
这是在progressdialog到来之前。
当我按下计算时:
progressdialog结束后:
正如您所看到的,在progressdialog消失后,我的值不会转换。
在我的代码中,
convertvalues("USD", "EUR");
只是从互联网获取实际货币值,并将其与我的edittextdollars中的值相乘。没有任何问题,它没有progressdialog。我自己测试了很多次。
我在这里做错了什么?我已经检查了Google超过一周,但我找不到一个解决方案。请帮我实现这个目标。非常感谢任何有关此问题的帮助。