Я пытаюсь написать фрагмент кода, который берет URL и отображает его текстовое содержимое в представлении EditText. Это не очень хорошо, я перебирал другие ссылки, которые, как я думал, давали ответ, такие как выполнение сетевых вызовов из AsyncTask, описанного здесь:
Сота Android: фрагмент не может запустить AsyncTask?
но это не похоже на работу. Это действительно одна функция (которая вызывает другую), это все, что я пытаюсь использовать здесь. Эти функции приведены для полноты:
public static InputStream getInputStreamFromUrl(String url){
InputStream contentStream = null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(new HttpGet(url));
contentStream = response.getEntity().getContent();
} catch(Exception e){
e.printStackTrace();
}
return contentStream;
}
public static String getStringFromUrl(String url) {
BufferedReader br = new BufferedReader(new InputStreamReader(getInputStreamFromUrl(url)));
StringBuffer sb = new StringBuffer();
try{
String line = null;
while ((line = br.readLine())!=null){
sb.append(line);
}
}catch (IOException e){
e.printStackTrace();
}
return sb.toString();
}
а это от моего:
private class FragmentHttpHelper extends AsyncTask<Void, Void, Boolean>{
protected void onPostExecute(Boolean result) {
contractTextTxt.setText(getStringFromUrl(urlReferenceTxt.getText().toString()));
}
@Override
protected Boolean doInBackground(Void... params) {
// TODO Auto-generated method stub
return true;
}
}
Выполняется при нажатии кнопки для получения URL:
retrieveURLReferenceBtn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
new FragmentHttpHelper().execute();
}
});
Так что, поставив вещи в асинхронную задачу, я подумал, что собираюсь обойти соты 3.0
NetworkOnMainThreadException, но, похоже, нет. Есть идеи, что попробовать дальше?