Я новичок в 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);
}
}
Это связано с тем, что конструктор 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/
Одно дело отметить код OP, так это то, что даже после добавления необходимой обработки исключений код не будет запускаться, потому что Android не разрешает сетевые действия в основном потоке. Вам необходимо использовать AsyncTask, как описано здесь: http://developer.android.com/resources/articles/painless-threading.html
Ну, сначала вам нужно выполнить свой код в методе try/catch. Попробуй и давай с тем, что у тебя больше?
URL url_g = new URL("://www.google.com/");