2014-09-29 76 views
0
Intent intent = new Intent(context, ColorConfigure.class); 
Intent.putExtras(AppWidgetManager.EXTRA_APPWIDGET_ID, appwidgetId); 
PendingIntent pi = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
RemoteViews r = new RemoteViews(context.getPackageName(), R.layout. activity_widget); 
r.setOnClickPendingIntent(R.I'd.pic, pic); 

上面的代碼在當時並沒有工作,即當我第一次啓動widget時,widget很容易加載,但是當我開始從widget中啓動一個新的活動時,什麼都不會發生。 但是,每當我從eclipse重新運行我的應用程序而不刪除小部件,那麼我的小部件開始成功運行沒有任何故障。 我真的不知道這是一個什麼樣的問題?或者,如果有人能夠通過向我發送一個小部件的代碼來幫助我,該小部件的代碼將從該活動的一個按鈕開始新的活動。如何通過點擊小部件中的圖像來啓動一項活動?

回答

1

即使我面對類似的問題,我的應用程序的主屏幕小部件。它非常類似於fb/twitter主屏幕小部件(如果未簽名顯示更新顯示爲「您未簽名」)。即使你不需要服務。在你的情況下,你沒有調用manager.updateAppWidget(ids,views);

public class NFWidgetProvider extends AppWidgetProvider { 

      @Override 
      public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
        int[] appWidgetIds) { 
    final Intent intent = new Intent(context, UpdateService.class); 

      context.startService(intent); 

       } 
} 

Updateservice.class //我的應用程序code..mention服務類的應用程序清單

public void onStart(Intent intent, int startId) { 

AppWidgetManager manager = AppWidgetManager.getInstance(this); 
     ComponentName thisWidget = new ComponentName(this, 
       NFWidgetProvider.class); 
     int[] ids = manager.getAppWidgetIds(thisWidget); 
     final int N = ids.length; 
     for (int i = 0; i < N; i++) { 
      int awID = ids[i]; 

    RemoteViews views = new RemoteViews(getPackageName(), 
         R.layout.widget_layout); 

       Intent intent = new Intent(this, your intented class); 
       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

       //views.setTextViewText(R.id.widgetcount, visitstext); 
       PendingIntent pendingIntent = PendingIntent.getActivity(this, 
         0, intent, 0); 

       views.setOnClickPendingIntent(R.id.widgetimage, pendingIntent); 
manager.updateAppWidget(awID, views); 
    } 
相關問題