2016-10-27 6 views
0

현재 내가 컬렉션 응용 프로그램 위젯을 공부하고, 나는 혼란 스러워요 두 지점이있다, 코드는 아래를 참조두 질문

의 onUpdate 코드

 Intent serviceIntent=new Intent(context,StackService.class); 
     serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))); 
     RemoteViews remoteViews=new RemoteViews(context.getPackageName(),R.layout.stack_widget); 
     remoteViews.setRemoteAdapter(R.id.stack_widget,serviceIntent); 
     remoteViews.setEmptyView(R.id.stack_widget,R.id.stack_empty); 

     Intent toastIntent = new Intent(context, StackWidget.class); 
     toastIntent.setAction(StackWidget.TOAST_ACTION); 
     toastIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]); 
     PendingIntent toastPendingIntent = PendingIntent.getBroadcast(context, 0, toastIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
     remoteViews.setPendingIntentTemplate(R.id.stack_widget, toastPendingIntent); 

     appWidgetManager.updateAppWidget(appWidgetIds[i],remoteViews); 

getViewAt 코드

public RemoteViews getViewAt(int position) { 
     RemoteViews remoteViews=new RemoteViews(getPackageName(),R.layout.stack_item); 
     remoteViews.setImageViewResource(R.id.item_image,R.raw.logo); 
     remoteViews.setTextViewText(R.id.item_text,list.get(position)); 

     Bundle extras = new Bundle(); 
     extras.putInt(StackWidget.EXTRA_ITEM, position); 

     Intent fillIntent=new Intent(); 
     fillIntent.putExtras(extras); 

     remoteViews.setOnClickFillInIntent(R.id.item_button,fillIntent); 
     return remoteViews; 
    } 

첫 번째 질문은 아래 코드의 목적은 입니다. serviceIntent.setData (Uri.parse (serviceIntent.toUri (Intent .URI_INTENT_SCHEME)))); Google api doc을 통해 읽었지만 대답을 찾을 수 없습니다.

두 번째 질문은 toastIntent에 대한 것인데 왜 의도 동작이 getViewAt 메소드가 아니라 onUpdate 메소드로 설정되고 있습니까? 그리고 버튼을 눌렀을 때 TOAST_ACTION이라는 맞춤 조치가있는 보류중인 의도가 실행되는 이유는 무엇입니까?

미리 질문 해 주셔서 감사합니다.

답변

0

Intent.toUri()Intent을 URI 표현이있는 String으로 변환 할 수 있습니다.

setDate은 날짜와 관련된 구성 요소를 시작할 수있는 선언되지 않은 Intent에서 자주 사용됩니다.

+0

여기에 setData를 넣을 목적을 설명해 주시겠습니까? – Leon

+0

아니요, 저는 당신에게 말하지 않을 것입니다. – user7078144