WebサービスからHTTP応答を取得するAndroidアプリがあり、これを文字列の配列に処理します。私はそれらの文字列をListViewに表示しようとします。アクションを実行するためにクリックする必要はなく、表示してスクロール可能にするだけです。
実行すると、すべて正常に実行されますが、表示する必要のあるアイテムの量を超えて下にスクロールしようとすると(リストに表示する文字列がなくなるため)、NullPointerExceptionが発生します。明らかに、私は何か間違ったことをしているに違いありません。
よくわかりません。私はテストとして同様の例を書きました、そしてそれはうまく働きます。この例のリストは、表示するアイテムがなくなるとスクロールして停止します。私が考えることができる唯一の違いは、元のアプリでは配列がスレッド上に作成され、スレッドがハンドラーを使用して実行可能ファイルを実行し、GUIにリストを表示することです。
文字列をフェッチして配列に命令して表示するスレッドが終了すると、ハンドラーを使用して次のコードを実行します。
scoreList = (ListView) findViewById(R.id.scorelist);
ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,scoreResult);
scoreList.setAdapter(myAdapter);
下にスクロールしようとするとアプリがクラッシュするよりも。これはadblogcatからのエラーです:
D/AndroidRuntime( 864): Shutting down VM
W/dalvikvm( 864): threadid=1: thread exiting with uncaught exception (group=0x4
001d800)
E/AndroidRuntime( 864): FATAL EXCEPTION: main
E/AndroidRuntime( 864): java.lang.NullPointerException
E/AndroidRuntime( 864): at android.widget.ArrayAdapter.createViewFromRes
ource(ArrayAdapter.java:355)
E/AndroidRuntime( 864): at android.widget.ArrayAdapter.getView(ArrayAdap
ter.java:323)
E/AndroidRuntime( 864): at android.widget.AbsListView.obtainView(AbsList
View.java:1294)
E/AndroidRuntime( 864): at android.widget.ListView.makeAndAddView(ListVi
ew.java:1727)
E/AndroidRuntime( 864): at android.widget.ListView.fillDown(ListView.jav
a:652)
E/AndroidRuntime( 864): at android.widget.ListView.fillGap(ListView.java
:623)
E/AndroidRuntime( 864): at android.widget.AbsListView.trackMotionScroll(
AbsListView.java:2944)
E/AndroidRuntime( 864): at android.widget.AbsListView.onTouchEvent(AbsLi
stView.java:2065)
E/AndroidRuntime( 864): at android.widget.ListView.onTouchEvent(ListView
.java:3315)
E/AndroidRuntime( 864): at android.view.View.dispatchTouchEvent(View.jav
a:3766)
E/AndroidRuntime( 864): at android.view.ViewGroup.dispatchTouchEvent(Vie
wGroup.java:897)
E/AndroidRuntime( 864): at android.view.ViewGroup.dispatchTouchEvent(Vie
wGroup.java:936)
E/AndroidRuntime( 864): at android.view.ViewGroup.dispatchTouchEvent(Vie
wGroup.java:936)
E/AndroidRuntime( 864): at android.view.ViewGroup.dispatchTouchEvent(Vie
wGroup.java:936)
E/AndroidRuntime( 864): at com.android.internal.policy.impl.PhoneWindow$
DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
E/AndroidRuntime( 864): at com.android.internal.policy.impl.PhoneWindow.
superDispatchTouchEvent(PhoneWindow.java:1107)
E/AndroidRuntime( 864): at android.app.Activity.dispatchTouchEvent(Activ
ity.java:2086)
E/AndroidRuntime( 864): at com.android.internal.policy.impl.PhoneWindow$
DecorView.dispatchTouchEvent(PhoneWindow.java:1655)
E/AndroidRuntime( 864): at android.view.ViewRoot.handleMessage(ViewRoot.
java:1785)
E/AndroidRuntime( 864): at android.os.Handler.dispatchMessage(Handler.ja
va:99)
E/AndroidRuntime( 864): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 864): at android.app.ActivityThread.main(ActivityThrea
d.java:4627)
E/AndroidRuntime( 864): at java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime( 864): at java.lang.reflect.Method.invoke(Method.java:5
21)
E/AndroidRuntime( 864): at com.android.internal.os.ZygoteInit$MethodAndA
rgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime( 864): at com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:626)
E/AndroidRuntime( 864): at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( 59): Force finishing activity memo.ori.friend/.Highscores
W/ActivityManager( 59): Activity pause timeout for HistoryRecord{4503fed0 memo
.ori.friend/.Highscores}
W/WindowManager( 59): No window to dispatch pointer action 1
W/ActivityManager( 59): Launch timeout has expired, giving up wake lock!
W/ActivityManager( 59): Activity idle timeout for HistoryRecord{45023af0 memo.
ori.friend/.MemoFriendActivity}
D/dalvikvm( 261): GC_EXPLICIT freed 45 objects / 2128 bytes in 108ms
W/ActivityManager( 59): Activity destroy timeout for HistoryRecord{4503fed0 me
mo.ori.friend/.Highscores}
D/SntpClient( 59): request time failed: java.net.SocketException: Address fami
ly not supported by protocol
I/Process ( 864): Sending signal. PID: 864 SIG: 9
I/ActivityManager( 59): Process memo.ori.friend (pid 864) has died.
I/WindowManager( 59): WIN DEATH: Window{45077ce0 memo.ori.friend/memo.ori.frie
nd.MemoFriendActivity paused=false}
I/WindowManager( 59): WIN DEATH: Window{4507cf60 memo.ori.friend/memo.ori.frie
nd.Highscores paused=false}
I/UsageStats( 59): Unexpected resume of com.android.launcher while already res
umed in memo.ori.friend
W/InputManagerService( 59): Got RemoteException sending setActive(false) notif
ication to pid 864 uid 10044
W/IInputConnectionWrapper( 126): showStatusIcon on inactive InputConnection
D/SntpClient( 59): request time failed: java.net.SocketException: Address fami
ly not supported by protocol