我正在开发一个 ListView 小部件,我希望用户能够在单击 ListView 时启动 Activity 。我无法找到任何关于此的教程,所以我想知道是否有人可以为我指出正确的方向或者分享一些代码。我想启动相同的 Activity ,无论单击哪个 ListItem,这样都不是问题。

感谢所有帮助!

请您参考如下方法:

看看here并滚动到副标题向单个项目添加行为

您需要确保从 AppWidgetProvider 调用 setPendingIntentTemplate() ,并RemoteViewsService.RemoteViewsFactory 实现调用 setOnClickFillInIntent()

例如:

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; 
    } 
} 

StackWidget 示例中有一个更结论性的示例,位于 SDK samples 中,尽管我发现它有点难找到(请参阅 here 了解方向)。它创建了一个 Intent 来显示 Toast 消息,但它使用相同的代码。


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!