在Android 3.0及以上版本中,从Web服务获取的InputStream加载ImageView出现问题

3
我的应用程序需要从网络服务获取的InputStream中获取图像数据,并显示图像预览。 InputStream被解码为位图以在ImageView中显示。整个流程在Android 2.2和2.3中运行良好,但在Android 3.0和4.0中无法正常工作。在后者中解码的位图为空,而在2.x中却没有问题。
这是我使用的代码片段:
ImageView imgView = (ImageView) findViewById(R.id.image);       
String imageUrl = "my webservice url";      
HttpClient httpClient = new DefaultHttpClient();
HttpGet mHttpGetEntity = new HttpGet(imageUrl);
HttpResponse response;
try {
    response = httpClient.execute(mHttpGetEntity);
    XmlPullParser xpp = XmlPullParserFactory.newInstance().newPullParser();       
    InputStream is = response.getEntity().getContent();
    xpp.setInput(is, "UTF-8");
    // use xpp for process
    imgView.setImageBitmap(BitmapFactory.decodeStream(is));        
} catch (ClientProtocolException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

如何使此功能在 Android 3.0 及以上版本中工作?请给出建议。

1个回答

2

你的代码在我的4.0上运行良好。我认为不用担心3.0,因为它是一个不稳定的版本,没有人会使用它。


我在Google Nexus和Galaxy Tab 10.1上尝试过,但两种情况下都无法工作。那么问题可能是什么呢? - Girish K.N.
你有互联网连接权限吗?当我在我的测试应用程序中首次测试它时,我得到了同样的结果,然后我记得我需要互联网权限。我使用这个图片http://ikailansays.files.wordpress.com/2008/12/n506957763_68091.jpg虽然不是我... - Win Myo Htet
是的,在我为发布这里创建的示例应用程序中确实缺少了权限!但是,我的应用程序仍存在问题,它涉及解析响应的附加任务。我已更新上面的代码。 - Girish K.N.
好的,我找到了导致问题的代码行。它在xpp.setInput(is,“UTF-8”)中。 我认为xpp.setInput更改了InputStream 'is'的内容,这是我的问题原因。当我注释掉那行代码时,它运行良好。但我不确定同样的原始代码如何在Android 2.x中正常工作! 现在,我该如何从InputStream加载图像并使用XmlPullParser解析它? - Girish K.N.
1
你在说什么?XmlPullParser?如果你再看一遍你的问题,你从来没有提到过XML,只有ImageView和null。如果你不知道如何正确地提问,你就不会得到答案。此外,FAQ stackoverflow建议一个问题对应一个问题,以使问题与其他人相关。现在,你已经解决了null问题,标记这个问题为已回答,并开始一个新的问题来处理Xml的事情。 - Win Myo Htet
抱歉造成困扰!由于我不确定是什么导致了我的问题,所以想发布最简代码而不是将整个项目中分散在各个类中的所有内容都放进去。感谢宝贵的答案! - Girish K.N.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接