使用新的 Google Places SDK 使用 PlaceAutoCompleteFragment 时设置 Place Fields 错误

Setting Place Fields error while using PlaceAutoCompleteFragment using new Google Places SDK

目前正在关注 Google 关于使用 Google 的新 guide 但是使用片段的地方。

尽管设置

autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME));

它带来了

 java.lang.NullPointerException: Place Fields must be set.

目前这是我的代码。

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        autocompleteFragment.onActivityResult(requestCode, resultCode, data);


        autocompleteFragment = (AutocompleteSupportFragment)
                getChildFragmentManager().findFragmentById(R.id.autocomplete_fragment);

        if (!Places.isInitialized()) {
            Log.d(TAG, "onActivityResult: Start");
            Places.initialize(getActivity(), String.valueOf(R.string.google_api_key));

        }


        if (autocompleteFragment != null) {
            autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME));
        }

        autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME));


        // Set up a PlaceSelectionListener to handle the response.
        autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
            @Override
            public void onPlaceSelected(@NonNull Place place) {
                Log.d(TAG, "Place: " + place.getName() + ", " + place.getId());

            }

            @Override
            public void onError(@NonNull Status status) {

                Log.d(TAG, "onError: Error:" + status);
            }


        });

    }

Places SDK has been Depricated You need to migrate to new PLACES API. You can find solution by the below tguideline.