我在我的 Android 应用程序中遇到问题。我正在创建一个货币转换器。我需要创建一个在您将值从一种货币转换为另一种货币时出现的进度对话框。我发现我需要通过处理程序传递我的值,但我不知道该怎么做。
这是我的代码的一部分:
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();
}
}
};
进度对话框出现并消失,但后台没有任何反应。以下是我的应用程序的几张图片:
这是在进度对话框出现之前。
当我按下计算时:
进度对话框完成后:
如您所见,在进度对话框消失后,我的值不会转换。
在我的代码中,
convertvalues("USD", "EUR");
只是从互联网上获取实际货币价值并将其与我的 edittextdollars 中的价值相乘。它没有任何问题,并且它在没有进度对话框的情况下工作。我自己测试过很多次。
我在这里做错了什么?我已经检查了谷歌一个多星期,但我找不到单一的解决方案。请帮助我实现这个目标。非常感谢有关此问题的任何帮助。