2012-03-05 53 views

回答

1

你用過掛起的意圖,從您的AppsWidget開始活動,並在活動時執行類似按鈕的任何操作單擊可以改變和刷新appswidget的,你應該在下面的代碼中使用:

RemoteViews views = new RemoteViews(getPackageName(), R.layout.appswidget); 
views.setTextViewText(R.id.txtInfo, "Tiwari"); 
ComponentName thisWidget = new ComponentName(v.getContext(), WidgetProvider.class); 
AppWidgetManager manager = AppWidgetManager.getInstance(InfoActivity.this); 
manager.updateAppWidget(thisWidget, views); 

這裏RemoteViews視圖將在此處更新,通過manager.updateAppWidget(),AppWidgetProvider的onUpdate()將在appWidget上調用並刷新。

你會得到here一個很好的演示。

+0

的問題是,我上的AppWidgetProvider,我和這個運行配置活動: – 2012-03-05 08:13:56

+0

意向configIntent =新意圖(語境,ConfigureActivity.class); \t \t \t configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId); \t \t \t configIntent.setAction(ACTION_UPDATE); \t \t \t PendingIntent configPendingIntent = PendingIntent.getActivity(context,0,configIntent,PendingIntent.FLAG_CANCEL_CURRENT); \t \t \t remoteViews.setOnClickPendingIntent(R.id.config_button,configPendingIntent); – 2012-03-05 08:14:38

+0

我可以在appWidget按鈕上使用startActivityForResult嗎? – 2012-03-05 08:15:33

0

我建議你從配置活動發送一個廣播消息到小部件。 當您要刷新其狀態時,您將發送給它的同一個廣播消息。

Intent refreshIntent = new Intent(this, WidgetProvider.class); 
refreshIntent.setAction(WidgetProvider.ACTION_RELOAD); 
refreshIntent.putExtra(WidgetProvider.EXTRA_WIDGET_ID, widgetId); 
sendBroadcast(refreshIntent); 

在WidgetProvider你只是處理新郵件收到

@Override 
    public void onReceive(Context context, Intent intent) { 
     super.onReceive(context, intent); 
      // do your stuff here on ACTION_RELOAD 
    }