2014-10-02 59 views
0

我有一個接收器子分類在片段和隨附的服務中,該服務向廣播接收器發送消息,以在特定條件下顯示不確定的麪包。我也有一個布爾值來告訴我Receiver是否在運行。接收器在點擊列表項上註冊,如圖所示。IllegalArgumentException:接收器未在分段內的子分類接收器中註冊

if(!ReceiverON){ 
           getActivity().registerReceiver(new Receiver(), filter); 
           ReceiverON=true; 
          } 

我想在碎片被銷燬後取消註冊。我知道文檔說它應該在OnPause中取消註冊,但在onPause期間,我使用Receiver與服務結合來堅持敬酒。在我的摧毀我註銷是如下

if(ReceiverON){ 
      ReceiverON=false; 
      Log.i("Log on Destroy", "Receiver ON...Destroying"); 
      getActivity().unregisterReceiver(new Receiver()); 
      if(getActivity().startService(ServiceIntent) != null) { 
       getActivity().stopService(ServiceIntent); 
      } 

     } 

如果我做的應用程序崩潰與上述拋出:IllegalArgumentException:未註冊的取消註冊線路接收器。如果我註釋掉該行,則會收到有關未取消註冊Receiver的錯誤日誌。我該如何解決這個問題?

回答

2

拋出:IllegalArgumentException:由於您在unregisterReceiver方法傳遞Receiver類的不同目的接收機尚未註冊

。使用您在registerReceiver還通過了註銷廣播接收機同一個對象:調用registerReceiver方法之前>初始化objReceiver對象 - : -

private Receiver objReceiver; 

>在類級別創建Receiver類的對象:

objReceiver=new Receiver(); 
getActivity().registerReceiver(objReceiver, filter); 

- >objReceiver對象unregisterReceiver

if(objReceiver !=null) 
    getActivity().unregisterReceiver(objReceiver); 
+0

你我的朋友應該有一個給予好評和冰涼的啤酒去用它 – 2014-10-02 14:44:22