java - 使用服务来显示 toast

标签 java android service toast

我正忙着处理新的应用程序。不过,我创建了一个调用如下方法的服务:

MessageProcessor mp = new MessageProcessing(MessageService.this);
wa.setNewMessageBind(mp);

但是,由于它被添加到服务而不是 Activity 中,因此会出现此错误:

nl.giovanniterlingen.whatsapp.MessageService cannot be cast to android.app.Activity

是的,我在互联网上搜索了很多,但仍然找不到适合我需要的答案。这是消息处理源:

((Activity) context).runOnUiThread(new Runnable() {
                public void run() {
                    Toast.makeText(
                            context,
                            msg.getFrom() + "(" + msg.getGroupId() + "): "
                                    + msg.getText(), Toast.LENGTH_SHORT)
                            .show();
                }
            });

当我用 system.out 替换 toast 时,如下所示:

System.out.println(msg.getFrom() + "(" + msg.getGroupId()
                    + "): " + msg.getText());

然后它工作正常,但我想要 toast ,所以这就是我问的原因。

要获得更清晰的 View ,请参阅我的 Github 和 2015 年 9 月 7 日的最新提交

https://github.com/gi097/WhatsApi-Android

最佳答案

您无法将扩展 ServiceMessageService 转换为 Activity

您需要从服务访问您的 UiThread。检查这个问题,也许会对您有所帮助:Accessing UI thread handler from a service

Handler handler = new Handler(Looper.getMainLooper());

handler.post(something_to_run_on_main_thread);

关于java - 使用服务来显示 toast ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31312121/

相关文章:

java - 从命令提示符运行程序时未找到 Classnotfound

java - 如何在 javafx 中通过事件传递参数?

Android 服务和 SQLite 访问数据完整性

java - 在 Android 上停止服务

java - HTTPClient 4.1 中带有文件和字符串的多部分 POST

java - 如何构造这组相关的Java类呢?

php - 在 iOS 和 Android 的 PHP 中创建 SQLite 文件

java - 无法保存扩展名为 .json 的文件

android - 时间选择器显示时间如 4 :7 instead of 04:07

android - 具有 Intent.FLAG_ACTIVITY_NEW_TASK 的 Activity 已被销毁