2010-02-22 10 views
16

jest związane z:ImageView.setImageURI nie działa, gdy próbuje przypisać R.drawable.X Uri

Need suggestion about a mixed "Uri/int id" images ambient

teraz moim problemem jest to, że:

ImageView imgView=(ImageView)findViewById(R.id.imgView); 
Uri imgUri=Uri.parse("android.resource://my.package.name/"+R.drawable.image); 
imageView.setImageURI(imgUri); 

nie działa. czemu?

wiem, że

imgView.setImageDrawable(Drawable.createFromStream(
        getContentResolver().openInputStream(imgUri), 
        null)); 

pracy.

ale to NIE rozwiązuje mojego problemu. ponieważ chcę ustawić obraz z niezależną uri, jeśli pochodzi z zasobu lub pochodzi z kamery ACTION_PICK intent ...

wszelkie sugestie są mile widziane. Dziękuję. Pozdrowienia

+1

Nie mogę uwierzyć, że nikt nie miał tego samego problemu ... ani nie ma rozwiązań ... dlaczego takie rzeczy nie działają, dlaczego w ogóle nie są dokumentowane? – Qlimax

Odpowiedz

49

Spróbuj

Uri imgUri=Uri.parse("android.resource://my.package.name/"+R.drawable.image); 
imageView.setImageURI(null); 
imageView.setImageURI(imgUri); 

Jest to obejście odświeżania ImageButton, który próbuje buforować poprzedni obraz Uri. Przekazywanie null skutecznie ją resetuje.

Rozwiązanie zasugerowane w tej książce: Sams Teach Yourself Android Application Development in 24 Hours - Godne polecenia do przeczytania.

+3

Dzięki. Android jest okropny, zmarnował połowę dnia. Twoje rozwiązanie załatwiło sprawę. – andude

+0

Dzięki! BTW to nie działa dla mnie na bardzo dużych obrazach. Na małych zdjęciach działa dobrze. – walla

+0

@walla To też nie działało dla mnie. Czy masz inną odpowiedź? –

0

imageView.postInvalidate() działa. Lub imageView.invalidate(), jeśli jesteś w wątku UI.

Powiązane problemy