Google Places Autocomplete API not retrieving place suggestions

I'm using Google Places Autocomplete API in my application. I followed this tutorial http://wptrafficanalyzer.in/blog/adding-google-places-autocomplete-api-as-custom-suggestions-in-android-search-dialog/ but when i write the place name in search box, it doesn't retrieves the suggestions and when I press Go button, my app crashes. Please Help

Log File

03-10 16:51:56.383: E/ActivityThread(25238): Failed to find provider info for com.appscourt.earth.map.PlaceProvider
03-10 16:51:58.798: E/ActivityThread(25238): Failed to find provider info for com.appscourt.earth.map.PlaceProvider
03-10 16:51:59.594: E/ActivityThread(25238): Failed to find provider info for com.appscourt.earth.map.PlaceProvider
03-10 16:52:00.399: E/ActivityThread(25238): Failed to find provider info for com.appscourt.earth.map.PlaceProvider
03-10 16:52:01.805: E/ActivityThread(25238): Failed to find provider info for com.appscourt.earth.map.PlaceProvider
03-10 16:52:06.298: E/ActivityThread(25238): Failed to find provider info for com.appscourt.earth.map.PlaceProvider
03-10 16:52:06.313: D/AndroidRuntime(25238): Shutting down VM
03-10 16:52:06.313: W/dalvikvm(25238): threadid=1: thread exiting with uncaught exception (group=0x40d072a0)
03-10 16:52:06.344: E/AndroidRuntime(25238): FATAL EXCEPTION: main
03-10 16:52:06.344: E/AndroidRuntime(25238): java.lang.NullPointerException
03-10 16:52:06.344: E/AndroidRuntime(25238):    at com.appscourt.earth.map.location.MainActivity.showLocations(MainActivity.java:129)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at com.appscourt.earth.map.location.MainActivity.onLoadFinished(MainActivity.java:116)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at com.appscourt.earth.map.location.MainActivity.onLoadFinished(MainActivity.java:1)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.support.v4.app.LoaderManagerImpl$LoaderInfo.callOnLoadFinished(LoaderManager.java:427)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.support.v4.app.LoaderManagerImpl$LoaderInfo.onLoadComplete(LoaderManager.java:395)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.support.v4.content.Loader.deliverResult(Loader.java:104)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.support.v4.content.CursorLoader.deliverResult(CursorLoader.java:73)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.support.v4.content.CursorLoader.deliverResult(CursorLoader.java:35)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.support.v4.content.AsyncTaskLoader.dispatchOnLoadComplete(AsyncTaskLoader.java:223)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.support.v4.content.AsyncTaskLoader$LoadTask.onPostExecute(AsyncTaskLoader.java:61)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.support.v4.content.ModernAsyncTask.finish(ModernAsyncTask.java:461)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.support.v4.content.ModernAsyncTask.access$500(ModernAsyncTask.java:47)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.support.v4.content.ModernAsyncTask$InternalHandler.handleMessage(ModernAsyncTask.java:474)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.os.Looper.loop(Looper.java:137)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at android.app.ActivityThread.main(ActivityThread.java:5059)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at java.lang.reflect.Method.invokeNative(Native Method)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at java.lang.reflect.Method.invoke(Method.java:511)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
03-10 16:52:06.344: E/AndroidRuntime(25238):    at dalvik.system.NativeStart.main(Native Method)

MainActivity.Java

public class MainActivity extends FragmentActivity implements
        LoaderCallbacks<Cursor> {

    GoogleMap gMap;
    ImageButton search;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initializeMap();
        handleIntent(getIntent());
        search = (ImageButton)findViewById(R.id.search);
        search.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                onSearchRequested();
            }
        });
    }

    private void handleIntent(Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SEARCH)) {
            doSearch(intent.getStringExtra(SearchManager.QUERY));
        } else if (intent.getAction().equals(Intent.ACTION_VIEW)) {
            getPlace(intent.getStringExtra(SearchManager.EXTRA_DATA_KEY));
        }
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        handleIntent(intent);
    }

    private void doSearch(String query) {
        Bundle data = new Bundle();
        data.putString("query", query);
        getSupportLoaderManager().restartLoader(0, data, this);
    }

    private void getPlace(String query) {
        Bundle data = new Bundle();
        data.putString("query", query);
        getSupportLoaderManager().restartLoader(1, data, this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {
        case R.id.action_search:
            onSearchRequested();
            break;

        default:
            break;
        }
        return super.onMenuItemSelected(featureId, item);
    }

    @Override
    public Loader<Cursor> onCreateLoader(int arg0, Bundle query) {
        CursorLoader cLoader = null;
        if (arg0 == 0)
            cLoader = new CursorLoader(getBaseContext(),
                    PlaceProvider.SEARCH_URI, null, null,
                    new String[] { query.getString("query") }, null);
        else if (arg0 == 1)
            cLoader = new CursorLoader(getBaseContext(),
                    PlaceProvider.DETAILS_URI, null, null,
                    new String[] { query.getString("query") }, null);
        return cLoader;
    }

    @Override
    public void onLoadFinished(Loader<Cursor> arg0, Cursor c) {
        // TODO Auto-generated method stub
        showLocations(c);
    }

    @Override
    public void onLoaderReset(Loader<Cursor> arg0) {
        // TODO Auto-generated method stub

    }

    private void showLocations(Cursor c) {
        MarkerOptions markerOptions = null;
        LatLng position = null;
        gMap.clear();
        while (c.moveToNext()) {
            markerOptions = new MarkerOptions();
            position = new LatLng(Double.parseDouble(c.getString(1)),
                    Double.parseDouble(c.getString(2)));
            markerOptions.position(position);
            markerOptions.title(c.getString(0));
            gMap.addMarker(markerOptions);
        }
        if (position != null) {
            CameraUpdate cameraPosition = CameraUpdateFactory
                    .newLatLng(position);
            gMap.animateCamera(cameraPosition);
        }
    }

    @SuppressLint("NewApi")
    private void initializeMap() {

        if (gMap == null) {

            gMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
                    R.id.map)).getMap();
            // check if map is created successfully or not
            if (gMap == null) {
                Toast.makeText(getApplicationContext(),
                        "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                        .show();
            }
        }
    }   
}

Answers


public void onLoadFinished(Loader<Cursor> arg0, Cursor c) {
    // TODO Auto-generated method stub
    showLocations(c);
}

My guess is that your Cursor is null. Have you checked that?


Need Your Help

Problems with using PHP to display CSV file as HTML table

php html csv

I'm trying to display a two column, four row CSV file in an HTML table. I have the code below, but it only displays the first row and I don't understand why.