2012-07-27 63 views
0

我有一個小部件,其佈局有兩個按鈕。我的代碼如下:Android:單擊小部件時不會啓動活動

public void onReceive(Context context, Intent i) { 

    AppWidgetManager mgr = AppWidgetManager.getInstance(context); 

    Intent intent = new Intent(context, Activity1.class); 
    PendingIntent pendingLayout = PendingIntent.getActivity(context, 0, intent, 0); 


    Intent searchIntent = new Intent(context, Activity2.class); 
    PendingIntent searchPendingLayout = PendingIntent.getActivity(context, 0, searchIntent, 0); 

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

    views.setOnClickPendingIntent(R.id.widgetbutton, pendingLayout); 
    views.setOnClickPendingIntent(R.id.widgetsearch, searchPendingLayout); 

    ComponentName comp = new ComponentName(context, 
      RecentTaskWidget.class.getName()); 

    mgr.updateAppWidget(comp, views); 
} 

widgetbutton和widgetsearch是佈局中的兩個視圖。我從remoteviews對象中獲取相應的視圖,並將掛起的佈局添加到它們中的每一個。但是,這些活動並未開始。代碼有什麼問題嗎?

Thx!

+0

你有什麼錯誤嗎?例如'找不到活動或者......? – hasanghaforian 2012-07-27 13:11:07

+0

沒有錯誤...什麼也沒有發生 – rahul 2012-07-27 13:13:05

回答

0

覆蓋你AppWidgetProvideronUpdate()方法,並且此代碼添加到它的身上:

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    AppWidgetManager mgr = AppWidgetManager.getInstance(context); 
    Intent intent = new Intent(context, Activity1.class); 
    PendingIntent pendingLayout = PendingIntent.getActivity(context, 0, intent, 0); 
    Intent searchIntent = new Intent(context, Activity2.class); 
    PendingIntent searchPendingLayout = PendingIntent.getActivity(context, 0, searchIntent, 0); 
    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.searchwidget); 
    views.setOnClickPendingIntent(R.id.widgetbutton, pendingLayout); 
    views.setOnClickPendingIntent(R.id.widgetsearch, searchPendingLayout); 
    ... 
    appWidgetManager.updateAppWidget(appWidgetIds, views); 
}  

你可以看到this page瞭解更多詳情。

+0

@rahul請參閱我的編輯。 – hasanghaforian 2012-07-27 13:47:42

+0

像你說的那樣將代碼移動到onUpdate(),但它仍然不起作用。代碼對我來說看起來很好。不知道爲什麼意圖不合格 – rahul 2012-07-27 15:21:01

+0

@rahul你是否添加了我的smple cod?我改變了最後一行,我希望這對你有所幫助。 – hasanghaforian 2012-07-28 03:51:20