我有一個IntentService,我試圖在一些過程完成後顯示帶有消息的對話框。通過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: You need to use a Theme.AppCompat theme (or descendant) with this activity.
我不想去與我的清單擺弄周圍,因爲這可能會影響到應用程序的一切,但沒有任何繞過這個方法?我可以以某種方式將AppCompatActivity傳遞給IntentService嗎?我可以以某種方式將IntentService與AppCompat關聯?我有什麼選擇?
編輯:嘗試使用對話框活動辦法:
Intent intent = new Intent(ServiceName.this, ActivityWithDialogTheme.class);
intent.putExtra(ActivityWithDialogTheme.MESSAGE, message);
startActivity(intent);
你在會議公共汽車上張貼什麼意思?我如何獲得一個活動來撿起它?至於通知我並不熟悉,但似乎是學習的好東西 – KaliMa
@KaliMa:「在會展巴士上發佈什麼意思?」 - 我的意思是使用事件總線,[如LocalBroadcastManager](https://github.com/commonsguy/cw-omnibus/tree/master/EventBus/LocalBroadcastManager)或[greenrobot的EventBus](https:// github的.com/commonsguy /順式總括/樹/主/ EventBus/GreenRobot3)。 「我如何得到一個活動來撿起它?」 - 這是使用事件總線的一部分。本評論前面的鏈接是示例項目,演示如何使用這兩種總線,UI或「通知」是服務工作的結果(在這種情況下,由「AlarmManager」觸發)。 – CommonsWare
這是否意味着我沒有選擇,如果我不知道如何在這種情況下使用EventBus? – KaliMa