2014-08-31 18 views
1

표시되지 않습니다 코드 :RemoteView.setImageViewResource 여기 레이아웃의 내 위젯에 이미지 뷰에 이미지를 설정하려고하지만, 대신 그림의 나는 빈 화면</p> <p>있어 아무것도

public class MyWidget extends AppWidgetProvider { 

     Bitmap bitmap; 
     Bitmap bckgrnd; 
     Bitmap over; 

     @Override 
     public void onEnabled(Context context) { 
     super.onEnabled(context); 

RemoteViews widgetView = new RemoteViews(context.getPackageName(), 
       R.layout.widget); 
     bckgrnd=BitmapFactory.decodeResource(context.getResources(), R.drawable.backgrnd); 
     over=BitmapFactory.decodeResource(context.getResources(), R.drawable.human); 

     bitmap=bckgrnd.copy(Bitmap.Config.ARGB_8888, true);; 
     Canvas c=new Canvas(bitmap); 
     c.drawBitmap(over, 50, 50, new Paint()); 
     widgetView.setImageViewBitmap(R.id.stage, bitmap); 



     Log.d("MyLog", "onEnabled"); 
     } 

    ...... 
    } 

그래서, 내 로그 캣에서 "OnEnabled"의 로그가이 코드는 잘 실행되었지만, 이미지 뷰가 비어 있다는 것을 의미한다. 레이아웃 xml에 이미지를 설정하면 해당 이미지가 표시됩니다. 즉, xml이 올바르게 설정되었음을 의미하지만 코드는 ImageView에서이 이미지를 변경하지 않습니다.

onUpdate()에서이 작업을 시도했지만 작동하지 않았습니다. ImageView에서이 이미지를 변경하려면 어떻게해야합니까?

+0

이미지를 설정 한 후에'appWidgetManager.updateAppWidget' 메소드를 호출 했습니까? – hoomi

+0

appWidgetManager.updateAppWidget (새 ComponentName (context, MyWidget.class), widgetView); - 이게 옳은 거니? 나는 그것을 onUpdate()에서 호출하지만 아무 일도 일어나지 않는다. –

+0

'public void partiallyUpdateAppWidget (int appWidgetId, RemoteViews views)'? 그것은 당신의 코드에서 변경된 사항을 AppWidgetManager에 알리는 것을 잊어 버린 이미지를 변경할 때 – hoomi

답변

1

나는 지금 늦게 생각합니다. 그러나 여전히 찾고있는 사람을 돕기 위해서입니다.

은 나를 위해,이 COMPONENT_NAME 당신이로 클릭 바로 위젯을하려는 경우 응용 프로그램 .. 모든 위젯을 업데이트합니다

COMPONENT_NAME = new ComponentName(context, MyWidget.class); 

입니다 ..

// Change widget image, and update current app widget. 
widgetView.setImageViewBitmap(R.id.stage, bitmap); 
AppWidgetManager.getInstance(context).updateAppWidget(COMPONENT_NAME, widgetView); 

을했다 그리고 업데이트 된 다음 COMPONENT_NAME 대신 widgetIdupdateAppWidget()에 전달합니다.

+0

http://developer.android.com/reference/android/widget/ImageView.html#setImageResource(int) – CrandellWS

+0

UI 스레드에서 비트 맵 읽기 및 디코딩을 수행하므로 지연 문제가 발생할 수 있습니다. 그게 걱정된다면 setImageDrawable (android.graphics.drawable.Drawable) 또는 setImageBitmap (android.graphics.Bitmap) 및 BitmapFactory를 대신 사용해보십시오. – CrandellWS

1

다음과 같은 onUpdate 호출에서 rv.setImageViewResource를 호출한다는 점을 제외하고 비슷한 문제가 발생했습니다.

제 해결책은 xml 파일의 ImageView에 대한 초기 이미지를 설정해야하며 런타임에 ImageView의 사진을 변경할 수 있다는 것입니다. xml의 ​​초기 그림을 지정하지 않은 경우 setImageViewResource가 작동하지 않으면 ImageView에 아무 것도 표시되지 않습니다. 업데이트

:

지금 setImageViewResource 잘 아무리 이미지 뷰를 작동하지 않습니다는 XML의 초기 SRC가 있거나, 그것은 비록 유선 아니에요.