마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

appwidget에서 프로그래스 바를 띄우는것에 대한 질문입니다.

0 추천
public class WeatherWidgetProvider extends AppWidgetProvider {

 

...

 @Override
    public void onReceive(Context ctx, Intent intent) {
     

    final String action = intent.getAction();
 

    RemoteViews views = new RemoteViews(ctx.getPackageName(), R.layout.widget_layout);
            views.setViewVisibility(R.id.progress_bar, View.VISIBLE);

       
        if (action.equals(REFRESH_ACTION)) {

 

..시간걸리는 작업

 views.setViewVisibility(R.id.progress_bar, View.GONE);//프로그래스바를 없애라

 

  @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {

     for (int i = 0; i < appWidgetIds.length; ++i) {
        
      //실제 뷰를그리기위한 설계도
      layout = buildLayout(context, appWidgetIds[i], mIsLargeLayout);

//buildLayout에서는 버튼을 배치합니다.

     
      
      appWidgetManager.updateAppWidget(appWidgetIds[i], layout);
     }

 

질문내용은

 

onUpdate에서는 버튼을 배치하고 그리고 위젯을 업데이트하는 내용들이 있습니다.

onReceive에서는 버튼을 눌렀을때 기본적인 처리 블럭이 들어갑니다.

 

제가 원하는 동작은 버튼이 눌리면 프로그래스바가 보여지기 시작해서

동작이 끝나면 프로그래스바를 없애주는 그런 작업을 하고싶습니다..

 

그런데 위의 소스처럼 구현하니까 제가 원하는대로 동작을 안하고

 

계속 프로그래스바가 돌기만 하네요.. ㅠㅠ
피튜니아 (640 포인트) 님이 2014년 1월 2일 질문
피튜니아님이 2014년 1월 2일 수정

1개의 답변

+1 추천
 
채택된 답변
onReceive 끝에 다음 과 같은 코드를 쿠가하세요
 
ComponentName watchWidget = new ComponentName(context, 현재 위젯 클래스);
appWidgetManager.updateAppWidget(watchWidget, views);
aucd29 (218,390 포인트) 님이 2014년 1월 3일 답변
피튜니아님이 2014년 1월 3일 채택됨
헐 진짜 되네요 감사합니다
...