0

Android アプリで MapQuest jar を使用していますが、MapQuest jar の一部である RouteManager.RouteCallback() に必要なメソッドの 1 つで問題が発生しました。

以下のコードでわかるように、NullPointerException を提供するメソッドは onError() メソッドです。アプリがクラッシュしないように、そのメソッドから NullPointerException をキャッチするにはどうすればよいですか? メソッド全体を try/catch でラップしようとしましたが、うまくいきません。エラーが発生しています。助言がありますか?ありがとう。

routeManager.setRouteCallback(new RouteManager.RouteCallback() {

        @Override
        public void onError(RouteResponse routeResponse) {
            Info info = routeResponse.info;
            int statusCode = info.statusCode;

            StringBuilder message = new StringBuilder();
            message.append("Unable to create route.\n").append("Error: ")
                    .append(statusCode).append("\n").append("Message: ")
                    .append(info.messages);
            Toast.makeText(getApplicationContext(), message.toString(),
                    Toast.LENGTH_LONG).show();
            createRouteButton.setEnabled(true);
        }

        @Override
        public void onSuccess(RouteResponse routeResponse) {
            clearButton.setVisibility(View.VISIBLE);
            if (showItineraryButton.getVisibility() == View.GONE
                    && showMapButton.getVisibility() == View.GONE) {
                showItineraryButton.setVisibility(View.VISIBLE);
            }
            createRouteButton.setEnabled(true);
        }

    });
}

スタックトレース:

01-11 14:26:51.296: E/AndroidRuntime(343): FATAL EXCEPTION: main
01-11 14:26:51.296: E/AndroidRuntime(343): java.lang.NullPointerException: println needs a message
01-11 14:26:51.296: E/AndroidRuntime(343):  at android.util.Log.println_native(Native Method)
01-11 14:26:51.296: E/AndroidRuntime(343):  at android.util.Log.e(Log.java:230)
01-11 14:26:51.296: E/AndroidRuntime(343):  at com.mapquest.android.maps.RouteManager.handleResponse(RouteManager.java:393)
01-11 14:26:51.296: E/AndroidRuntime(343):  at com.mapquest.android.maps.RouteManager.access$400(RouteManager.java:59)
01-11 14:26:51.296: E/AndroidRuntime(343):  at com.mapquest.android.maps.RouteManager$RouteTask.onPostExecute(RouteManager.java:648)
01-11 14:26:51.296: E/AndroidRuntime(343):  at com.mapquest.android.maps.RouteManager$RouteTask.onPostExecute(RouteManager.java:611)
01-11 14:26:51.296: E/AndroidRuntime(343):  at android.os.AsyncTask.finish(AsyncTask.java:417)
01-11 14:26:51.296: E/AndroidRuntime(343):  at android.os.AsyncTask.access$300(AsyncTask.java:127)
01-11 14:26:51.296: E/AndroidRuntime(343):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
01-11 14:26:51.296: E/AndroidRuntime(343):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-11 14:26:51.296: E/AndroidRuntime(343):  at android.os.Looper.loop(Looper.java:123)
01-11 14:26:51.296: E/AndroidRuntime(343):  at android.app.ActivityThread.main(ActivityThread.java:3683)
01-11 14:26:51.296: E/AndroidRuntime(343):  at java.lang.reflect.Method.invokeNative(Native Method)
01-11 14:26:51.296: E/AndroidRuntime(343):  at java.lang.reflect.Method.invoke(Method.java:507)
01-11 14:26:51.296: E/AndroidRuntime(343):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-11 14:26:51.296: E/AndroidRuntime(343):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-11 14:26:51.296: E/AndroidRuntime(343):  at dalvik.system.NativeStart.main(Native Method)
4

3 に答える 3

0

時には敗北を認めなければなりません。大ハンマーで瓶をこじ開けようとするか、頭を下げて MapQuest のフォーラムにスレッドを投稿することができます。

:(

http://developer.mapquest.com/web/products/forums/-/message_boards?_19_mbCategoryId=224714

編集:ああ、それは一見の価値があります。MPQ API の最新ビルドを使用していますか?

于 2012-01-11T19:57:33.873 に答える
0

通常、NullPointerException をキャッチすることはお勧めできません。null 変数の逆参照は避ける必要があります。たとえば、変数がnullであると思われる場合は、変数がnullではないことを確認します。

createRouteButtonあなたの例では、何らかの理由で null のように見えます。

于 2012-01-11T19:33:09.323 に答える
0

あなたはキャッチしませんNullPointerException。あなたは単に参照で何もしませんnull

どの参照がnull正確かを確認し、確認してくださいif (foo != null) {..}

于 2012-01-11T19:21:43.560 に答える