货币转换器API无法在Android中运行

时间:2013-06-21 01:25:55

标签: java android currency

我遇到的问题是我的Yahoo Finance API无法在我的代码中运行。我正在创建一个实时货币转换器。我检查了谷歌但似乎没有回答我的问题。当我在我的应用程序中按“计算”按钮时,没有任何反应。这是我输入的代码。

        public interface CurrencyConverter {
    public double convert(String currencyFrom, String currencyTo) throws Exception;
}

public class YahooCurrencyConverter implements CurrencyConverter{
     public double convert(String currencyFrom, String currencyTo) throws IOException {
            HttpClient httpclient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet("http://quote.yahoo.com/d/quotes.csv?s=" + currencyFrom + currencyTo + "=X&f=l1&e=.csv");
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            String responseBody = httpclient.execute(httpGet, responseHandler);
            httpclient.getConnectionManager().shutdown();
            return Double.parseDouble(responseBody);
}


}
     public void convertDollarstoEuros(){
    double current;
    double val = Double.parseDouble(edittextdollars.getText().toString());
    DecimalFormat df = new DecimalFormat(".##");
     YahooCurrencyConverter ycc = new YahooCurrencyConverter();

        try {
            current = ycc.convert("USD", "EUR");
            edittexteuros.setText(df.format(val*current)); 
            }
        catch (Exception e) {
            e.printStackTrace();
        }

    }

我在我的清单文件中拥有互联网权限,并且已在我的Android SDK中安装了Google API。我的代码似乎有些问题,但我无法识别它。这是我删除try / catch方法时出现的内容: http://oi40.tinypic.com/2sah6d5.jpg

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

很可能“没有任何反应”,因为你正在捕捉所有异常。我建议您删除try...catch块,或者至少捕获您需要处理的特定异常,并让Java异常系统为您完成剩余的工作。我强烈建议您了解有关Java异常处理系统的更多信息。 The Oracle tutorial on Exceptions是一个很好的起点。前两课将为您提供在Android编程中遇到的99%所需的基础知识。

此外,您应该检查logcat以查看是否 抛出了任何异常。

编辑:关于例外的一点

请注意,弹出消息中的某些文本为蓝色。这意味着您可以单击它,Eclipse将为您生成一些代码。我建议您点击“Surround with try / catch”并注意生成的代码与您在此处发布的代码有何不同。当您了解如何以及何时使用try / catch语句时,这是一个很好的工具。

在这种特殊情况下,我认为“添加抛出声明”是一个更好的选择。点击它,看看会发生什么。您很可能会在代码中的其他位置遇到类似的错误。您应该继续向每个不知道如何处理异常的方法添加throws声明。您应该只向一个知道在发生错误时该怎么做的方法添加一个try / catch语句。这通常在UI代码中,例如Listener方法。