【发布时间】:2011-08-05 00:40:37
【问题描述】:
我正在尝试编写一个接收 URL 并将其文本内容显示到 EditText 视图的代码 sn-p。这并不顺利,我已经研究了我认为可以给出答案的其他链接,例如从此处描述的 AsyncTask 进行网络调用:
Android Honeycomb: Fragment not able to start 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();
}
});
所以通过将东西放在 asynctask 中,我认为我可以绕过蜂窝 3.0 NetworkOnMainThreadException 但似乎不是。有什么想法可以尝试下一步吗?
【问题讨论】:
标签: android httpclient android-3.0-honeycomb