public class TestButton extends Activity { /** Called when the activity is first created. */ ImageButton imgBtn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); imgBtn = (ImageButton) findViewById(R.id.image); //String url = "http://thenextweb.com/apps/files/2010/03/google_logo.jpg"; String url1 = "http://trueslant.com/michaelshermer/files/2010/03/evil-google.jpg"; Drawable drawable = LoadImage(url1); imgBtn.setImageDrawable(drawable); } private Drawable LoadImage(String url) { try { InputStream is = (InputStream) new URL(url).getContent(); Drawable d = Drawable.createFromStream(is, "src"); return d; } catch (Exception e) { return null; } } }
Powyżej znajduje się fragment kodu, którego używam do ładowania obrazu z sieci do ImageButton. Większość obrazów jest wyświetlana, ale niektóre adresy URL, takie jak powyższy, tj. Url1, Drawable.createFromStream zwróciły wartość zerową! Jaki jest powód i jak tego uniknąć lub przezwyciężyć ten problem?CreateFromStream w systemie Android zwraca wartość zerową dla określonego adresu URL
To był błąd w wersji 1.0 Androida, jest to nadal występują w 2.x? W moich testach wydaje się, że tak jest, ale szukam oficjalnego potwierdzenia od Google. Ponadto, w kodzie, do czego służy ustawienie BUFFER_IO_SIZE? – ThomasW
@ThomasW Nie mogę powiedzieć na pewno. Dwie rzeczy, których jestem pewien, to to, że mają to samo zachowanie i ta sama poprawka działała dla mnie w wersjach 2.1 i 2.2 zarówno na emulatorze, jak i na urządzeniu. Zaktualizuję moją odpowiedź, aby uwzględnić wartość BUFFER_IO_SIZE. – mcveat
Dzięki za rozwiązanie, to działa. – sat