如何在 OnItemClickListener 中应用通知?

Posted

技术标签:

【中文标题】如何在 OnItemClickListener 中应用通知?【英文标题】:How to apply notifications in OnItemClickListener? 【发布时间】:2012-06-25 18:23:51 【问题描述】:

我在使用 OnItemClickListener 的通知代码中有 3 个错误 我需要应用它,当单击一个项目时它会显示通知 这是代码:

    list.setOnItemClickListener(new OnItemClickListener()

        public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
            // TODO Auto-generated method stub


            Bundle programNum = getIntent().getExtras();
            final String progNum = programNum.getString("ProgNum");
            final String dayNum = programNum.getString("DayNum");

            final List<TouringPrograms> startTime = datasource.getTouringProgramsStartTime(progNum, dayNum);
            final List<TouringPrograms> endTime = datasource.getTouringProgramsEndTime(progNum, dayNum);

            Intent intent = new Intent(this, ProgramsList2.class);
            PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
            String body = (String) ((TextView)parent.getChildAt(position)).getText();
            String title = "Egypt On The Go";
            String time = body + "\n start at:" + startTime.get(position)+ "\n end at:" + endTime.get(position);
            Notification n = new Notification(R.drawable.egypt, time, System.currentTimeMillis());
            n.setLatestEventInfo(this, title, time, pi);
            n.defaults = Notification.DEFAULT_ALL;
            nm.notify(uniqueID, n);
            //String time1 = "" + System.currentTimeMillis();
            //Toast.makeText(this, time1, Toast.LENGTH_SHORT).show();
            //finish();

        );

第 3 个错误:

1.Intent intent = new Intent(this, ProgramsList2.class);

2.PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);

3.n.setLatestEventInfo(this, title, time, pi);

请帮忙?

【问题讨论】:

错误应该为您提供足够的信息来开始调查 我猜它们是编译器错误,无论您使用哪种编译方式,您都应该得到一些描述错误的文本。 【参考方案1】:

错误 1

Intent intent = new Intent(this, ProgramsList2.class);

thisOnItemClickListener 类型的项目。您应该通过在调用setOnItemClickListener 之前 声明final Context intentContext = (Context) this; 来传递它。然后,使用:

Intent intent = new Intent(intentContext, ProgramsList2.class);

始终记得跟踪您的Context 项目;它们对于这样的事情很重要(Intents、资源、资产等)。

错误 2

PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);

与上面完全相同的问题。 this 不是 Context 类型。使用与上述相同的修复方法。

错误 3

n.setLatestEventInfo(this, title, time, pi);

在这里,与上述两个问题相同。当您应该使用Context 时,您正在使用this。与上述两个相同的修复。

总结

在使用anonymous classes 时跟踪您的thiss。对于将来,发布编译错误(代码行以及错误本身的文本)对那些提供答案的人来说非常有帮助。

【讨论】:

请考虑将此答案标记为正确,因为它会帮助有相同问题的其他人也解决他们的问题!

以上是关于如何在 OnItemClickListener 中应用通知?的主要内容,如果未能解决你的问题,请参考以下文章

设置为null后如何将onItemClickListener重置为true?

如何在 ListView 中使用 onItemClickListener 获取其他列

如何通过 onItemClickListener 在不同的类( ConsumerDescAndEdit.java )中使用某个类的变量?

如何使用 onItemClickListener 存储 ListView 中的可点击项目?

如何使用 Android Studio 在 Twitter Kit 的 TweetUI 列表上设置 OnItemClickListener?

执行长按时如何防止 OnItemClickListener 工作?