2012-07-08 28 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