按下小部件 ListView 项时,Android 启动活动 [英] Android start activity when pressing widget ListView item

查看:16
本文介绍了按下小部件 ListView 项时,Android 启动活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆