Search code examples
javaandroidandroid-loadermanagergoogle-developers-console

Why getLoaderManager.initLoader() third argument = this IS INVALID?


In the Udacity ND..Pet App,In an activity that extends AppCompaActivity and Implements LoaderManager.LoaderCallbacks calling the getLoaderManager.initLoader(0,null,this);shows error that the third argument is invalid..

//THESE ARE SOME OF THE IMPORT STATEMENTS;

import android.support.v4.app.LoaderManager;    
import android.support.v4.content.CursorLoader; 
import android.support.v4.content.Loader;       
import android.support.v7.app.AppCompatActivity;
public class CatalogActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> {

/** Database helper that will provide us access to the database */
private PetDbHelper mDbHelper;
PetCursorAdapter mCursorAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_catalog);

    // Setup FAB to open EditorActivity
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
            @Override
        public void onClick(View view) {
            Intent intent = new Intent(CatalogActivity.this, EditorActivity.class);
            startActivity(intent);
        }
    });
    ListView listView = (ListView) findViewById(R.id.listview);
    View emptyListView = (View) findViewById(R.id.empty_view);
    listView.setEmptyView(emptyListView);
    //mDbHelper = new PetDbHelper(this);
    mCursorAdapter = new PetCursorAdapter(this,null);
    listView.setAdapter(mCursorAdapter);
    getLoaderManager().initLoader(0,null,this);<-----HERE
    // To access our database, we instantiate our subclass of SQLiteOpenHelper
    // and pass the context, which is the current activity.
}

....Rest of the Code...

BUILD.gradle file is 
apply plugin: 'com.android.application'

android {
compileSdkVersion 28
defaultConfig {
    applicationId "com.example.pets"
    minSdkVersion 15
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner 
    "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:support-annotations:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Solution

  • Just replace your import import android.support.v4.app.LoaderManager; by import android.app.LoaderManager;