Reputation: 315
When I try to scroll through my word search, my program crashes throwing a null pointer exception. However I have no idea why,
my grid view is created with an array
String [] WordSearch = new String[FormattedWords.length];
for(int i = 1; i<FormattedWords.length ;i++)
{
WordSearch[i-1] = FormattedWords[i];
}
, the logcat is giving me this also
04-17 14:19:37.623: E/AndroidRuntime(5969): FATAL EXCEPTION: main
04-17 14:19:37.623: E/AndroidRuntime(5969): java.lang.NullPointerException
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.widget.AbsListView.obtainView(AbsListView.java:2267)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.widget.GridView.makeAndAddView(GridView.java:1331)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.widget.GridView.makeRow(GridView.java:331)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.widget.GridView.fillDown(GridView.java:283)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.widget.GridView.fillGap(GridView.java:243)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5036)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3193)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.widget.AbsListView.startScrollIfNeeded(AbsListView.java:3138)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.widget.AbsListView.onTouchEvent(AbsListView.java:3463)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.View.dispatchTouchEvent(View.java:7127)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2170)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1905)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2176)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1919)
04-17 14:19:37.623: E/AndroidRuntime(5969): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1925)
04-17 14:19:37.623: E/AndroidRuntime(5969): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1379)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.app.Activity.dispatchTouchEvent(Activity.java:2396)
04-17 14:19:37.623: E/AndroidRuntime(5969): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1873)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.View.dispatchPointerEvent(View.java:7307)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3172)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3117)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4153)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4132)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4224)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:163)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4203)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:4243)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.Choreographer.doCallbacks(Choreographer.java:555)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.Choreographer.doFrame(Choreographer.java:523)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.os.Handler.handleCallback(Handler.java:615)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.os.Handler.dispatchMessage(Handler.java:92)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.os.Looper.loop(Looper.java:137)
04-17 14:19:37.623: E/AndroidRuntime(5969): at android.app.ActivityThread.main(ActivityThread.java:4745)
04-17 14:19:37.623: E/AndroidRuntime(5969): at java.lang.reflect.Method.invokeNative(Native Method)
04-17 14:19:37.623: E/AndroidRuntime(5969): at java.lang.reflect.Method.invoke(Method.java:511)
04-17 14:19:37.623: E/AndroidRuntime(5969): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
04-17 14:19:37.623: E/AndroidRuntime(5969): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-17 14:19:37.623: E/AndroidRuntime(5969): at dalvik.system.NativeStart.main(Native Method)
Any ideas?
Upvotes: 0
Views: 616
Reputation: 59
if value of FormattedWords[i]
is equals to null
means app will crashed when view comes front
Upvotes: 0
Reputation: 394
Why does the for loop start at 1 and insert the data as it does? The NullPointerException
is most likely caused by the for loop to insert Strings into the WordSearch
Array.
eg.
Assuming FormattedWords is an Array (you are using the .length attribute), if FormattedWords.length
is 3 and contains:
FormattedWords[0] = "a";
FormattedWords[1] = "b";
FormattedWords[2] = "c";
After the for loop WordSearch
will contain:
WordSearch[0] = "b";
WordSearch[1] = "c";
WordSearch[2] = null;
Which is here your problem seems to be.
EDIT
If first value in FormattedWords is to be omitted then you should initiate WordSearch
to size FormattedWords.lenght - 1
to avoid the NPE.
eg.
String [] WordSearch = new String[FormattedWords.length - 1];
Upvotes: 3