按下小部件 ListView 项时,Android 启动活动 [英] Android start activity when pressing widget ListView item
问题描述
我正在开发一个 ListView 小部件,我希望用户能够在单击 ListView 时启动活动.我一直无法找到任何关于此的教程,所以我想知道是否有人可以指出我正确的方向或分享一些代码.无论单击哪个 ListItem,我都想启动相同的活动,所以这不是问题.
I'm working on a ListView widget where I want the user to be able to launch a activity when the ListView is clicked. I haven't been able to find any sort of tutorial on this so I'm wondering if anyone could point me in the right direction or perhaps share some code. I want to launch the same activity regardless of which ListItem is clicked so that's not a problem.
感谢所有帮助!
推荐答案
看看 此处,然后滚动到副标题向单个项目添加行为.
Have a look here and scroll to the subheading Adding behavior to individual items.
您需要确保从 AppWidgetProvider
和 setOnClickFillInIntent()
中调用 setPendingIntentTemplate()
您的 RemoteViewsService.RemoteViewsFactory
实现.
You need to make sure you call both setPendingIntentTemplate()
from your AppWidgetProvider
and setOnClickFillInIntent()
from your RemoteViewsService.RemoteViewsFactory
implementation.
例如:
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 widgetRow;
}
}
SDK 示例中的 StackWidget 示例中有一个更有说服力的示例.a>,虽然我发现它有点难找(请参阅此处了解说明).它创建了一个意图来显示 Toast 消息,但它使用相同的代码.
There is a more conclusive example in the StackWidget sample which is in the SDK samples, although I found it somewhat difficult to find (see here for directions). It creates an intent to show a Toast message, but it uses the same code.
这篇关于按下小部件 ListView 项时,Android 启动活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!