0

nullユーザーがデータ フィードへの送信を中断すると、Android アプリで強制終了が発生します。または、インターネットが遅くて失速しているように見える場合がありますnull

httpコードを処理する方法は次のとおりです。

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url_select);

        try {
            httpPost.setEntity(new UrlEncodedFormEntity(param));
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();

            // read content
            is = httpEntity.getContent();

        } catch (Exception e) {

            Log.e("log_tag", "Error in http connection " + e.toString());
        }
        try {
            BufferedReader br = new BufferedReader(
                    new InputStreamReader(is));
            StringBuilder sb = new StringBuilder();
            String line = "";
            while ((line = br.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();

        } catch (Exception e) {
            Log.e("log_tag", "Error converting result " + e.toString());
        }

        return null;
    }

次に、onPostExecute以下AsyncTaskの LogCat に示すように、ここで null が返されます。

adapter = new ReviewAdapter(getActivity(), r, tf); // Line 1164

私はそれを殺すrのは何だと思いますか?null(tfは私が渡す TrueType フォントです)

rコードは次のとおりです。

        for (String i : reviews) {
            r[index] = new Review(reviews.get(index),
                    datelist.get(index), userlist.get(index),
                    itemlist.get(index), ratings.get(index),
                    helpfulCount.get(index), chatCounts.get(index),
                    catlist.get(index), titlelist.get(index));
            index++;
        }

これらArrayListsは、JSONParsing fromPHPなどによって設定されます。

だから私の質問は:これを一般的にどのように扱うのですか?nullを避けるために離れていますか?または、強制的に閉じるのではなく、どのようにすれば適切にエラーをスローできますか?

Logcat は次のとおりです。

02-19 12:15:12.012: E/AndroidRuntime(32116): FATAL EXCEPTION: main
02-19 12:15:12.012: E/AndroidRuntime(32116): java.lang.NullPointerException
02-19 12:15:12.012: E/AndroidRuntime(32116):    at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:128)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at com.---.---.ReviewAdapter.<init>(ReviewAdapter.java:42)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at com.---.---.RateFragmentActivity$ReviewFragment$ReviewTask.onPostExecute(RateFragmentActivity.java:1164)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at com.---.---.RateFragmentActivity$ReviewFragment$ReviewTask.onPostExecute(RateFragmentActivity.java:1)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at android.os.AsyncTask.finish(AsyncTask.java:631)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at android.os.Looper.loop(Looper.java:137)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at android.app.ActivityThread.main(ActivityThread.java:5193)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at java.lang.reflect.Method.invokeNative(Native Method)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at java.lang.reflect.Method.invoke(Method.java:511)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
02-19 12:15:12.012: E/AndroidRuntime(32116):    at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

1

最初のブロックが例外をスローした場合は、おそらくそこで停止し、2 番目のブロックtryを気にしないでください。例外がスローされた場合の値ではない可能性があるためです(接続が悪い場合に発生します)。tryishttpEntity.getContent();httpClient.execute

rどうかを確認nullして、接続が失われたことを示すエラーをユーザーに表示できないのはなぜですか?

于 2013-02-19T20:36:24.520 に答える