2012-07-27 62 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