0

このコード行があります

protected String doInBackground(String... args) {

            //unnecessary geocoder calculations

               strReturnedAddress = (returnedAddress.getLocality().toString());
        }
                }
            }


        return null;
    }

過去 2 日間は機能していましたが、今日、何らかの理由でアプリケーションがクラッシュし続け、logcat がこの行をエラーの原因として表示しています。この行を削除しても、アプリケーションはクラッシュしません。

代わりに、新しい文字列を作成して doInBackground メソッドから返し、onPostExecute で strReturnedAddress を設定する必要がありますか? これは昨日の夜にうまくいったので、私は本当に無知です。

編集:ここにlogcatがあります

   07-13 16:43:57.480: E/AndroidRuntime(28027): FATAL EXCEPTION: AsyncTask #5
07-13 16:43:57.480: E/AndroidRuntime(28027): java.lang.RuntimeException: An error occured while executing doInBackground()
07-13 16:43:57.480: E/AndroidRuntime(28027):    at android.os.AsyncTask$3.done(AsyncTask.java:299)
07-13 16:43:57.480: E/AndroidRuntime(28027):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
07-13 16:43:57.480: E/AndroidRuntime(28027):    at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
07-13 16:43:57.480: E/AndroidRuntime(28027):    at java.util.concurrent.FutureTask.run(FutureTask.java:239)
07-13 16:43:57.480: E/AndroidRuntime(28027):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
07-13 16:43:57.480: E/AndroidRuntime(28027):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
07-13 16:43:57.480: E/AndroidRuntime(28027):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
07-13 16:43:57.480: E/AndroidRuntime(28027):    at java.lang.Thread.run(Thread.java:856)
07-13 16:43:57.480: E/AndroidRuntime(28027): Caused by: java.lang.NullPointerException
07-13 16:43:57.480: E/AndroidRuntime(28027):    at com.example.realapptest1.MainActivity$GetCurrentCity.doInBackground(MainActivity.java:407)
07-13 16:43:57.480: E/AndroidRuntime(28027):    at com.example.realapptest1.MainActivity$GetCurrentCity.doInBackground(MainActivity.java:1)
07-13 16:43:57.480: E/AndroidRuntime(28027):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
07-13 16:43:57.480: E/AndroidRuntime(28027):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
07-13 16:43:57.480: E/AndroidRuntime(28027):    ... 4 more
4

3 に答える 3

0

問題はreturnedAddress変数にあり、次のように結果を処理できます。

strReturnedAddress = returnedAddress == null || returnedAddress.getLocality() == null ? 
                     "Not Found" : returnedAddress.getLocality().toString();
于 2013-07-13T13:51:13.537 に答える