java.net.URL в android .. вопрос новичка

1

Я новичок в 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);
    }
}
  • 0
    Я думаю, что это должен быть URL url_g = new URL("://www.google.com/");
  • 0
    Вы пробовали с другим URL? Я не вижу никакой ошибки
Показать ещё 1 комментарий
Теги:

3 ответа

6
Лучший ответ

Это связано с тем, что конструктор URL (новый URL ("http://www.google.com/")) выбрасывает проверенное исключение, в данном случае MalformedURLException, что означает, что вы должны его поймать или объявить в своем методе.

Используйте метод try/catch или throw в методе onCreate.

try/catch решение:

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

Одно дело отметить код OP, так это то, что даже после добавления необходимой обработки исключений код не будет запускаться, потому что Android не разрешает сетевые действия в основном потоке. Вам необходимо использовать AsyncTask, как описано здесь: http://developer.android.com/resources/articles/painless-threading.html

1

Ну, сначала вам нужно выполнить свой код в методе try/catch. Попробуй и давай с тем, что у тебя больше?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню