按下小部件ListView项目时Android开始活动

Android start activity when pressing widget ListView item(按下小部件ListView项目时Android开始活动)
本文介绍了按下小部件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.

感谢所有帮助!

推荐答案

看看这里并滚动到子标题向单个项目添加行为.

您需要确保从您的 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 示例中有一个更具说服力的示例,虽然我发现它有点难以找到(请参阅此处了解相关说明).它创建了一个显示 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开始活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How to target newer versions in .gitlab-ci.yml using auto devops (java 11 instead of 8 and Android 31 instead of 29)(如何在.gitlab-ci.yml中使用自动开发工具(Java 11而不是8,Android 31而不是29)瞄准较新的版本)
Android + coreLibraryDesugaring: which Java 11 APIs can I expect to work?(Android+core LibraryDesugering:我可以期待哪些Java 11API能够工作?)
How to render something in an if statement React Native(如何在If语句中呈现某些内容Reaction Native)
How can I sync two flatList scroll position in react native(如何在本机Reaction中同步两个平面列表滚动位置)
Using Firebase Firestore in offline only mode(在仅脱机模式下使用Firebase FiRestore)
Crash on Google Play Pre-Launch Report: java.lang.NoSuchMethodError(Google Play发布前崩溃报告:java.lang.NoSuchMethodError)