我正在處理ListView小部件,我希望用戶能夠在單擊ListView時啓動活動。我一直無法找到任何類型的教程,所以我想知道是否有人可以指向正確的方向或共享一些代碼。無論點擊哪個ListItem,我都想啓動相同的活動,所以這不是問題。按下小部件ListView項目時的Android開始活動
所有幫助表示讚賞!
我正在處理ListView小部件,我希望用戶能夠在單擊ListView時啓動活動。我一直無法找到任何類型的教程,所以我想知道是否有人可以指向正確的方向或共享一些代碼。無論點擊哪個ListItem,我都想啓動相同的活動,所以這不是問題。按下小部件ListView項目時的Android開始活動
所有幫助表示讚賞!
看一看here並滾動到子標題將行爲添加到單個項目。
你需要確保你從你的AppWidgetProvider
和setOnClickFillInIntent()
從RemoteViewsService.RemoteViewsFactory
實現通話雙方setPendingIntentTemplate()
。
例如:
public class Widget extends AppWidgetProvider {
// ...
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for(int i = 0; i < appWidgetIds.length; i++){
RemoteViews widget = new RemoteViews(context.getPackageName(), R.layout.widget);
Intent startActivityIntent = new Intent(context, myActivity.class);
PendingIntent startActivityPendingIntent = PendingIntent.getActivity(context, 0, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
widget.setPendingIntentTemplate(R.id.list_view, startActivityPendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds[i], widget);
// ...
}
}
public class WidgetAdapter implements RemoteViewsService.RemoteViewsFactory {
// ...
@Override
public RemoteViews getViewAt(int position) {
RemoteViews widgetRow = new RemoteViews(context.getPackageName(), R.layout.widget_row);
Intent fillInIntent = new Intent();
fillInIntent.putExtra(Widget.EXTRA_LIST_VIEW_ROW_NUMBER, position);
widgetRow.setOnClickFillInIntent(R.id.list_view_row, fillInIntent);
// ...
return row;
}
}
還有就是StackWidget樣品這是在SDK samples在更確鑿例如,雖然我發現有些難以找到(見here路)。它創建一個顯示Toast消息的意圖,但它使用相同的代碼。
要啓動任何Activity,請創建一個Intent,然後根據該意圖調用startActivity。檢查意向和startActivity,我相信你可以自己做。
當然我知道如何以平常的方式開展一項活動。我想知道如何使用ListView小部件來完成它,因爲普通的PendingIntent不起作用。 – SweSnow
我認爲這很簡單:http://stackoverflow.com/a/20774402/878126 –
唯一對我有用的東西。謝謝 – IHeartAndroid
它似乎獲取ListView中的所有數據,因此在進行活動時它不會返回您放置的正確額外數據。如何解決這個問題? – natsumiyu