日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

android service中显示一个dialog

發(fā)布時(shí)間:2024/4/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android service中显示一个dialog 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)自:http://blog.csdn.net/huxueyan521/article/details/8954844


dialog是依附于activity存在的。但是app中經(jīng)常需要使用以下的情況,在service中做一些后臺(tái)操作,在某個(gè)臨界條件滿足時(shí),顯示一個(gè)dialog告知用戶。

這時(shí)dialog無(wú)法直接從service中啟動(dòng)起來(lái),會(huì)報(bào)出android.view.WindowManager$BadTokenException:Unable to add window的錯(cuò)誤。

解決方法有兩種:

1. 顯示一個(gè)系統(tǒng)界別的dialog,即全局性質(zhì)的dialog。這種dialog在任何界面下都可以彈出來(lái)。但是,這種dialog不相應(yīng)home鍵和返回鍵,即強(qiáng)制用戶必須對(duì)dialog作出操作后。

使用方法是在dialog.show()語(yǔ)句之前設(shè)置dialog的window的type是system alert型。如下:

[java]?view plaincopyprint?
  • dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);??
  • dialog.show();??
  • 還需要在AndroidManifest.xml中增加權(quán)限:

    [html]?view plaincopyprint?
  • <uses-permission?android:name="android.permission.SYSTEM_ALERT_WINDOW"?/>??
  • 2. 在dialog的背后加一個(gè)透明的activity。即先顯示一個(gè)透明的activity,在使用activity的context顯示dialog。需要注意的是,activity在destroy的時(shí)候一定要把dialog給dismiss掉,否則activity消失但dialog還在,會(huì)crash。

    透明activity的創(chuàng)建方法是在AndroidManifest.xml中添加theme:

    [html]?view plaincopyprint?
  • <activity???
  • ?????android:name="com.a.b.activity"??????
  • ?????android:theme="@android:style/Theme.Translucent">??
  • </activity>??
  • 另外,需要設(shè)置activity沒(méi)有actionbar,設(shè)置方法是在Activity的onCreate方法中增加:

    [java]?view plaincopyprint?
  • requestWindowFeature(Window.FEATURE_NO_TITLE); ??
  • 總結(jié)

    以上是生活随笔為你收集整理的android service中显示一个dialog的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。