Simon Olsen
Simon Olsen

Reputation: 785

ActivityThread Crashing program after deleting something out of an ArrayList

Ok, So I have this method in my program where I delete an object from an ArrayList. (The method is in the bottom of this post). It does some other stuff aswell, but after debugging alot I found that it is this line that causes the program to crash:

myTrackedEventsList.remove(currentEvent);

I tested this by trying to run the block with and without this line. Without this line it did not crash. The funny thing is that the line does not directly crash the program, actually the entire method runs through, and it goes back to where I called it from which is my

public void onClick(View v) {}

And after exiting the onClick method it jumps to

Activity.java -> View.java -> ActivityThread.jaca -> Handler.java and Looper.java

Now, I dont really know what theese classes do, and I have no idea why they cause my program to crash... It is the ActivityThread.java which causes the program to crash.

Can you please help me figure out why the program crashes? =)

Thanks alot in advance for any help! All the code is available here: https://github.com/smholsen/BigDayCountdown/tree/master/app/src/main/java/com/simonm/bigdaycountdown

This is the error codes I get:

12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime: FATAL EXCEPTION: main
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime: Process: com.simonm.bigdaycountdown, PID: 17346
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.AbsListView.obtainView(AbsListView.java:2344)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.ListView.makeAndAddView(ListView.java:1864)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.ListView.fillDown(ListView.java:698)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.ListView.fillFromTop(ListView.java:759)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.ListView.layoutChildren(ListView.java:1673)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.AbsListView.onLayout(AbsListView.java:2148)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.View.layout(View.java:15691)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.ViewGroup.layout(ViewGroup.java:4967)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1067)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.View.layout(View.java:15691)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.ViewGroup.layout(ViewGroup.java:4967)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.View.layout(View.java:15691)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.ViewGroup.layout(ViewGroup.java:4967)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.View.layout(View.java:15691)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.ViewGroup.layout(ViewGroup.java:4967)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.View.layout(View.java:15691)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.ViewGroup.layout(ViewGroup.java:4967)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.View.layout(View.java:15691)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.ViewGroup.layout(ViewGroup.java:4967)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.View.layout(View.java:15691)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.ViewGroup.layout(ViewGroup.java:4967)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2093)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1850)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1063)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5807)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.Choreographer.doCallbacks(Choreographer.java:580)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.Choreographer.doFrame(Choreographer.java:550)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5321)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016)
12-03 21:04:08.365 17346-17346/com.simonm.bigdaycountdown E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
12-03 21:04:08.459 17346-17346/com.simonm.bigdaycountdown I/Process: Sending signal. PID: 17346 SIG: 9

And this is the deleteEvent() Method:

    protected void deleteEvent(){

    if (currentEvent != null) {
        eventNames.remove(currentEvent.getEventTitle());

        //TODO: This line somehow crashes the program long after it has been executed, I have no idea why.
        myTrackedEventsList.remove(currentEvent);

        currentEvent.delete();
        currentEvent = null;
        Collections.sort(myTrackedEventsList);
        if (myTrackedEventsList.size() > 0){
            currentEvent = myTrackedEventsList.get(0);
            updateUI();
        }
        updateEventDrawer();
    }

    if (myTrackedEventsList.size() == 0){
        resetUI();
        updateEventDrawer();
        noEventsUI();
        findViewById(R.id.getStartedText).setVisibility(View.VISIBLE);

        ((ImageView) findViewById(R.id.background)).setImageResource(R.mipmap.background);
    }


}

Upvotes: 0

Views: 77

Answers (2)

Codingpan
Codingpan

Reputation: 318

It might caused by the Log.i(someString, null);

String.valueOf(null) //return null

Log.i("eventListBEFORE", String.valueOf(myTrackedEventsList));

Upvotes: 1

Brandon LaBraun Curry
Brandon LaBraun Curry

Reputation: 557

It looks like your myTrackedEventsList is null. Check where you're adding data to that array and make sure you're filling it up.

Upvotes: 1

Related Questions