java.net.URL在android ..新手问题

时间:2011-07-13 17:32:07

标签: java android

我是java的新手,正在尝试android开发。以下代码生成malformedURLException.can有人帮我识别异常。 任何提示都非常有用

package com.example.helloandroid;

import android.app.Activity;
//import android.widget.TextView;
import android.os.Bundle;
import java.net.*;
import java.io.*;
import android.widget.TextView;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        String outdata = "";
        URL url_g = new URL("http://www.google.com/");
        URLConnection ukr = url_g.openConnection();

        BufferedReader in = new BufferedReader(new InputStreamReader(ukr.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null)
            outdata += inputLine;
        in.close();
       tv.setText(outdata);
       setContentView(tv);
    }
}

3 个答案:

答案 0 :(得分:6)

这是因为网址构造函数(新网址(“http://www.google.com/”))会抛出Checked Exception,在这种情况下为 MalformedURLException ,这意味着您必须抓住它或在你的方法中声明它。

在onCreate方法中使用try / catch或throws子句。

尝试/捕捉解决方案:

public void onCreate(Bundle savedInstanceState) {
    ...
    try {
        URL url_g = new URL("http://www.google.com/");
    } catch(MalformedURLException e) {
        //Do something with the exception.
    }
    ...
}

抛出解决方案:

@Override
public void onCreate(Bundle savedInstanceState) throws MalformedURLException {
    ...
    URL url_g = new URL("http://www.google.com/");
    ...
}

检查此项以获取有关例外的更多信息。

http://download.oracle.com/javase/tutorial/essential/exceptions/

答案 1 :(得分:1)

您需要首先在try / catch方法中执行代码。尝试一下,让你有更多的东西吗?

答案 2 :(得分:1)

关于OP代码需要注意的一点是,即使添加了所需的异常处理,代码也不会运行,因为Android不允许主线程中的网络活动。您需要使用AsyncTask,如下所述:http://developer.android.com/resources/articles/painless-threading.html