我有一个IntentService,我试图在一些程序完成后显示带有消息的对话框。
我可以给你看烤面包
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(ServiceName.this, message, Toast.LENGTH_LONG);
}
}); 但是我想要显示一个对话框,因为它可以显示更多的文本,并且看起来更清晰。但当我尝试:
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联系起来吗?我有什么选择?
编辑:尝试使用对话框活动方法:
Intent intent = new Intent(ServiceName.this, ActivityWithDialogTheme.class);
intent.putExtra(ActivityWithDialogTheme.MESSAGE, message);
startActivity(intent);发布于 2017-02-04 17:07:52
我能以某种方式把一个AppCompatActivity传递到IntentService吗?
不是的。
我可以把IntentService和AppCompat联系起来吗?
不是的。
我有什么选择?
创建一个以对话框为主题的活动,并从您的服务中启动该活动。
或者,让服务在事件总线上发布一条消息,说明过程已经完成。如果您碰巧在前台有一个活动,它可以接收事件总线消息并显示对话框。如果前台没有活动,则服务可以找到并执行其他操作(例如,显示Notification),以避免中断用户。
https://stackoverflow.com/questions/42043025
复制相似问题