has no zero argument constructor

靜態(tài)注冊(cè)BroadcastReceiver時(shí)出現(xiàn)
java.lang.RuntimeException: Unable to instantiate receiver com.csair.oatree.broadcast.OaTreeBRHelper$OaTreeReceiver: java.lang.InstantiationException: java.lang.Class<com.csair.oatree.broadcast.OaTreeBRHelper$OaTreeReceiver> has no zero argument constructor
因?yàn)槲业腞eceiver是內(nèi)部類,所以注冊(cè)格式為


<receiver
android:name="com.csair.oatree.broadcast.OaTreeBRHelper$OaTreeReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="com.csair.oatree.broadcast_OaTreeAuth" />
</intent-filter>
</receiver>
解決方案:
1,如果是靜態(tài)廣播注冊(cè)方式、廣播作為內(nèi)部類來使用:廣播內(nèi)部類聲明為static類型。
2,如果是非靜態(tài)廣播注冊(cè)方式:廣播必須在類中注冊(cè)(調(diào)用registerReceiver()方法)、注銷(調(diào)用unregisterReceiver()方法)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容