2

Android の拡張ファイル機能についてアプリをテストしようとしています。しかし、ダウンロードがうまくいきません。ダウンロードの進行状況を表示するために SampleDownloaderActivity.java コードを使用しました。ただし、ダウンロードの進行状況は画面に表示されません。http://developer.android.com/google/play/expansion-files.htmlにあるドキュメントから必要なコードを含めました。

拡張ファイルのダウンロードのためにアプリをテストする必要があります。

アプリを起動すると、SampleDownloaderActivity.java から作成された UI が表示され、[ダウンロードの一時停止] ボタンをタップするとアプリがクラッシュし、null ポインター例外が発生します。

以下は、アプリがクラッシュしているコードです

 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)
4

1 に答える 1

0

mRemoteServiceヌルですか?コードを次のように置き換えてみてください。

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 (メッセンジャー m):

アクティビティで IStub をインスタンス化した後、このメソッドへの呼び出しを受け取ります。このメソッドは、DownloaderService のインスタンスに接続された Messenger オブジェクトを渡します。ダウンロードの一時停止や再開など、サービスに要求を送信するには、DownloaderServiceMarshaller.CreateProxy() を呼び出して、サービスに接続された IDownloaderService インターフェイスを受け取る必要があります。

1.クラスにインターフェースを
実装しましたか? IDownloaderClient2.IStubアクティビティで をインスタンス化しましたか?

于 2013-07-17T17:15:27.233 に答える