使用服务来展示祝酒词

时间:2015-07-09 08:29:37

标签: java android service toast

我很忙于一个新的应用程序。但是我创建了一个调用这样一个方法的服务:

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

但是,由于它已添加到服务中而不是活动中,因此会显示错误:

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

是的,我在互联网上搜索了很多,但我找不到符合我需要的答案。这是MessageProcessing源:

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

当我用这样的system.out替换吐司:

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

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

有关更清晰的视图,请参阅我的Github以及2015年7月9日的最新提交

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

3 个答案:

答案 0 :(得分:1)

您无法将服务 MessageService 投射到活动

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

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

handler.post(something_to_run_on_main_thread);

答案 1 :(得分:0)

您可以使用

Handler handler = new Handler(Looper.getMainLooper());
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(context, "Your msg here" + msg.getText(), Toast.LENGTH_LONG);
                    }
                });

答案 2 :(得分:-1)

private Toast myToast; //声明为字段

myToast = Toast.makeText(this, "DummyMessage", Toast.LENGTH_LONG); //在onCreate(Bundle b)

myToast.setText("yourActualMessage");    // set msg Inside service or whatever

myToast.show();                    // Display in service or anywhere you want