不知道大家在使用kotlin語言使用toast的時(shí)候有沒有遇到這樣一個(gè)異常:
java.lang.NoSuchMethodError: No virtual method getActivity()Landroid/app/Activity; in class Landroid/support/v4/app/Fragment; or its super classes (declaration of ‘a(chǎn)ndroid.support.v4.app.Fragment’ appears in /data/app/com.baoming-1/split_lib_dependencies_apk.apk)
而這個(gè)異常在activity里面就沒問題板甘,在fragment里面就報(bào)那個(gè)錯(cuò)誤絮识!
或許是kotlin還不夠成熟吧,我在項(xiàng)目中的處理是在基累封裝一個(gè)方法产雹,其他類執(zhí)行的時(shí)候直接調(diào)用就可以了毡咏,不知道大家是不是這樣的剃允!
具體方法如下:
BaseActivity:
fun isActivityValid(): Boolean {
if (getActivity().isFinishing) {
return false
? ? }else if ((Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) && isActivityDestroyed()) {
return false
? ? }
return true
}
override fun safeToast(message: String) {
? ? if (isActivityValid()) {
? ? ? ? applicationContext.longToast(message)
? ? }
}
BaseFragment:
fun isActivityValid(): Boolean {
? ? if (getActivity() == null) {
? ? ? ? MyLog.e("activity is finished")
? ? ? ? return false
? ? } else if (getActivity().isFinishing) {
? ? ? ? MyLog.e("activity isFinishing")
? ? ? ? return false
? ? } else if ((Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) && getActivity().isDestroyed) {
? ? ? ? MyLog.e("activity isDestroyed")
? ? ? ? return false
? ? }
? ? return true
}
fun safeToast(message: String) {
? ? if (isActivityValid()) {
? ? ? ? (this.activity as BaseActivity).safeToast(message)
? ? }
}
而使用方式很簡單:
直接提示你想要輸出的信息就好了=挑妗8擞隆!
safeToast("$errorMsg")
大伙有遇到這種情況么饱亿,歡迎留言蚜退,一起交流學(xué)習(xí)~
![長按(或掃碼)識別二維碼,關(guān)注~](https://upload-images.jianshu.io/upload_images/4683886-f1580198d0fb41f0?imageMogr2/auto-orient/strip%7CimageView2/2/w/258/format/webp)
**陳不二
博客地址:**?**[http://www.chenbu2.com](http://www.chenbu2.com/)**
**簡書地址:**?**[http://www.reibang.com/u/f4874eb81c5b](http://www.reibang.com/u/f4874eb81c5b)**
**GitHub地址:**?**[https://github.com/ChenBu2](https://github.com/ChenBu2)**
**愛學(xué)啊合作講師:**?**[http://www.ixuea.com/](http://www.ixuea.com/)**
**公眾號:**?**陳不2**
**技術(shù)交流QQ群:**?**858499698**
****歡迎一塊交流學(xué)習(xí)~****
喜歡的朋友記得點(diǎn)贊轉(zhuǎn)發(fā)分享哦彪笼!