2012-07-08 66 views
1

我试图从主屏幕小部件启动活动。但是,当我单击小部件时,该活动并未开始。以下是我的代码。Android:不从小部件开始的活动

@Override 
public void onReceive(Context context, Intent i) { 

    AppWidgetManager mgr = AppWidgetManager.getInstance(context); 

    Intent intent = new Intent(context, MyActivity.class); 
    PendingIntent pendingLayout = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

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

    views.setOnClickPendingIntent(R.id.widget, pendingLayout); 

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

    mgr.updateAppWidget(comp, views); 
} 

Thx! 拉胡尔。

+0

MyActivity是一项服务吗?那为什么这样叫? – Egor 2012-07-08 18:55:06

+0

不...它在同一个包中的另一个活动 – rahul 2012-07-08 19:01:42

回答

0

您需要使用PendingIntent.getActivity()而不是PendingIntent.getService(),可能这就是您的代码无法工作的原因。希望这可以帮助。

+0

它仍然无法正常工作。修改为getActivity() – rahul 2012-07-08 19:10:33

+0

您的onReceive()方法何时被调用?事实上,在AppWidget视图中将Pending Intents绑定到AppWidget视图的通常位置是onUpdate(),它在创建小部件后立即调用。 – Egor 2012-07-08 19:12:01

+0

终于找到了问题。我没有指定视图ID作为setOnClickPendingIntent()的参数,而是指定了布局ID。现在它正确地调用活动。谢谢! – rahul 2012-07-08 19:21:10