首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过IntentService显示对话框?

问通过IntentService显示对话框?
EN

Stack Overflow用户
提问于 2017-02-04 16:59:05
回答 1查看 488关注 0票数 1

我有一个IntentService,我试图在一些程序完成后显示带有消息的对话框。

我可以给你看烤面包

代码语言:javascript
复制
    handler.post(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(ServiceName.this, message, Toast.LENGTH_LONG);
        }
    }); 

但是我想要显示一个对话框,因为它可以显示更多的文本,并且看起来更清晰。但当我尝试:

代码语言:javascript
复制
    handler.post(new Runnable() {
        @Override
        public void run() {
            new AlertDialog.Builder(ServiceName.this)
                    .setTitle("Title")
                    .setMessage(message)
                    .create().show();
        }
    });

它抛出一个错误:

java.lang.IllegalStateException:您需要在此活动中使用Theme.AppCompat主题(或后代)。

我不想摆弄我的声明,因为这可能会影响应用程序中的其他一切,但有什么办法吗?我能以某种方式把一个AppCompatActivity传递到IntentService吗?我可以把IntentService和AppCompat联系起来吗?我有什么选择?

编辑:尝试使用对话框活动方法:

代码语言:javascript
复制
Intent intent = new Intent(ServiceName.this, ActivityWithDialogTheme.class);
intent.putExtra(ActivityWithDialogTheme.MESSAGE, message);
startActivity(intent);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-04 17:07:52

我能以某种方式把一个AppCompatActivity传递到IntentService吗?

不是的。

我可以把IntentService和AppCompat联系起来吗?

不是的。

我有什么选择?

创建一个以对话框为主题的活动,并从您的服务中启动该活动。

或者,让服务在事件总线上发布一条消息,说明过程已经完成。如果您碰巧在前台有一个活动,它可以接收事件总线消息并显示对话框。如果前台没有活动,则服务可以找到并执行其他操作(例如,显示Notification),以避免中断用户。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42043025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档