0

I have an Activity where I am trying to load a AsyncTaskLoader

But, I am getting a NullPointerException in line

getSupportLoaderManager().initLoader(0,null,null).forceLoad();

It was working fine but suddenly I have started seeing this crash.

I have spent hours trying to figure out why it is happening but couldn't find anything.

My activity has following imports:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.AsyncTaskLoader;
import android.support.v4.content.Loader;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;

and it extends AppCompatActivity

Here is my StackTrace for reference:

Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'android.support.v4.content.Loader android.support.v4.app.LoaderManager$LoaderCallbacks.onCreateLoader(int, android.os.Bundle)' on a null object reference
                                                                            at android.support.v4.app.LoaderManagerImpl.createLoader(LoaderManager.java:539)
                                                                            at android.support.v4.app.LoaderManagerImpl.createAndInstallLoader(LoaderManager.java:548)
                                                                            at android.support.v4.app.LoaderManagerImpl.initLoader(LoaderManager.java:603)
                                                                            at in.com.example.app.Activity.ExperiencesNTravel.CategoryVideoListActivity.onCreate(CategoryVideoListActivity.java:106)
                                                                            at android.app.Activity.performCreate(Activity.java:6251)
                                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                            at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                            at android.os.Looper.loop(Looper.java:148) 
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                            at java.lang.reflect.Method.invoke(Native Method)
Hello World
  • 239
  • 6
  • 17
  • Possible duplicate of [What is a NullPointerException, and how do I fix it?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – X3Btel Feb 01 '17 at 14:50

2 Answers2

3

The third parameter in #initLoader expects a "LoaderManager.LoaderCallbacks" callback. You should pass in "this" and implement the callback, otherwise it will attempt to call it on a null.

See: LoaderManager Documentation

Steve
  • 538
  • 4
  • 17
  • 2
    You dont have to pass this, you have to pass instance of LoaderManager.LoaderCallbacks . It can be your activity or any class you want to handle the callbacks – X3Btel Feb 01 '17 at 14:54
0

To solve it I implemented LoaderManager.LoaderCallbacks <Cursor> with its methods in my Fragment, in this way I passed this as the third parameter for initLoader and it worked correctly.

Ole Pannier
  • 3,208
  • 9
  • 22
  • 33