将上下文从服务传递到非活动类

时间:2015-12-14 07:03:35

标签: android

我有Service类和非活动类。我想将上下文从Service类传递给Non活动类。 这是我的代码:

Service class;
method(Service.this)

Non Activity class;
method(Contex context)

我正在" Dialog抛出Unable to add window — token null is not for an application” with getApplication() as context这个错误。怎么解决这个?

4 个答案:

答案 0 :(得分:1)

您无法从服务中显示对话框。

如果你真的想要显示一个对话框。

尝试启动一个Activity并将Activity的主题设置为Theme.Dialog。

当您需要从Service更改GUI时,您无法直接从服务中执行此操作。有关更多指南,请参阅this

答案 1 :(得分:1)

本质上,服务是Android UI-less组件,因此您无法在服务中显示任何内容。但是请记住两个选项。

  • Toast: Toast可以在任何环境中显示(活动,服务......)

  • A dialog-looked activity :您可以创建一个看起来完全是对话框的活动(通过应用对话框主题),然后在服务中显示它。
    (@ ahmad aghazadeh'答案)

答案 2 :(得分:0)

要显示AlertDialog左右,您必须拥有Activity上下文参考,而不是Application上下文或Service上下文。据我所知,您可以使用服务上下文弹出Toast消息。

答案 3 :(得分:0)

在服务中添加此代码

Intent dialogIntent = new Intent(this, myActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);

在myActivity中调用AlertDialog