2013-07-17 102 views
2

我想在android中測試我的應用程序的擴展文件功能。但是,下載不起作用。我使用SampleDownloaderActivity.java代碼來顯示下載的進度。 但是,屏幕上沒有可見的下載進度。我已經包含了所需的代碼http://developer.android.com/google/play/expansion-files.html擴展文件下載功能不起作用

給出的文檔我必須測試應用程序的擴展文件下載。

當應用程序啓動從SampleDownloaderActivity.java創建的UI是可見的時,點擊暫停下載按鈕將崩潰應用程序給出空指針異常。

下面就是應用程序崩潰

mPauseButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (mStatePaused) 
       { 
        mRemoteService.requestContinueDownload(); 
       } 
       else 
       { 
        mRemoteService.requestPauseDownload(); 
       } 
       setButtonPausedState(!mStatePaused); 
      } 
     }); 
    } 

下面的代碼是崩潰日誌我得到: -

07-17 22:26:21.998: E/AndroidRuntime(19293): java.lang.NullPointerException 
07-17 22:26:21.998: E/AndroidRuntime(19293): at com.lht.egoscue.SampleDownloaderActivity$2.onClick(SampleDownloaderActivity.java:360) 
07-17 22:26:21.998: E/AndroidRuntime(19293): at android.view.View.performClick(View.java:4084) 
07-17 22:26:21.998: E/AndroidRuntime(19293): at android.view.View$PerformClick.run(View.java:16966) 
07-17 22:26:21.998: E/AndroidRuntime(19293): at android.os.Handler.handleCallback(Handler.java:615) 
07-17 22:26:21.998: E/AndroidRuntime(19293): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-17 22:26:21.998: E/AndroidRuntime(19293): at android.os.Looper.loop(Looper.java:137) 
07-17 22:26:21.998: E/AndroidRuntime(19293): at android.app.ActivityThread.main(ActivityThread.java:4745) 
07-17 22:26:21.998: E/AndroidRuntime(19293): at java.lang.reflect.Method.invokeNative(Native Method) 
07-17 22:26:21.998: E/AndroidRuntime(19293): at java.lang.reflect.Method.invoke(Method.java:511) 
07-17 22:26:21.998: E/AndroidRuntime(19293): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
07-17 22:26:21.998: E/AndroidRuntime(19293): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
07-17 22:26:21.998: E/AndroidRuntime(19293): at dalvik.system.NativeStart.main(Native Method) 

回答

0

mRemoteService NULL?試着用替換代碼:

mPauseButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (mRemoteService != NULL) { 
        if (mStatePaused) 
        { 
         mRemoteService.requestContinueDownload(); 
        } 
        else 
        { 
         mRemoteService.requestPauseDownload(); 
        } 
        setButtonPausedState(!mStatePaused); 
       } 
       else { Log.wtf("SampleDownloaderActivity", "mRemoteService is NULL!!"); } 
      } 
     }); 
    } 

鉑2:

你知道,如果onServiceConnected真的被稱爲?引用您的文檔:

onServiceConnected(信使米):

後您在活動實例化化IStub,您會收到此方法的調用,它傳遞一個 Messenger的對象這與您的 DownloaderService實例相關。要向服務發送請求(例如暫停 並恢復下載),您必須致電 DownloaderServiceMarshaller.CreateProxy()以接收連接到該服務的 IDownloaderService接口。

因此,有你:
1.實現了IDownloaderClient接口在類? 2.您是否在您的活動中實例化了IStub

+0

我知道我可以添加該檢查,但我的問題是爲什麼mRemoteService爲空? –

+0

你的代碼在哪裏初始化? –

+0

@Override public void onServiceConnected(Messenger m){ mRemoteService = DownloaderServiceMarshaller.CreateProxy(m); mRemoteService.onClientUpdated(mDownloaderClientStub.getMessenger()); } –