AutocompleteSupportFragment无法正常工作'无法加载搜索结果'Android

我在用AutocompleteSupportFragment查找位置时遇到了问题,因为它没有显示任何结果,并且出现错误。 我已经放置了新的代码,因为他们要求我提供Google控制台密钥,但仍然无法使用。 这是我的代码 我没有密码限制,我不知道这是问题所在。

已启用Places API

谢谢。

Mainactivity.java

public class Mainactivity extends AppCompatactivity {


PlacesClient placesClient;
List<Place.Field> placesFields= Arrays.asList(Place.Field.ID,Place.Field.NAME,Place.Field.ADDRESS);
AutocompleteSupportFragment places_fragment;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initPlaces();
    setUpPlacesAutocomplete();

}


private void initPlaces() {

    Places.initialize(this,getString(R.string.places_api_key));
    placesClient=Places.createclient(this);


}

private void setUpPlacesAutocomplete() {


    places_fragment =(AutocompleteSupportFragment)getSupportFragmentManager()
            .findFragmentById(R.id.places_autocompletar);
    places_fragment.setPlaceFields(placesFields);
    places_fragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(@NonNull Place place) {

            Toast.makeText(Mainactivity.this,""+place.getName(),Toast.LENGTH_SHORT).show();
        }

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

            Toast.makeText(Mainactivity.this,""+status.getStatusMessage(),Toast.LENGTH_SHORT).show();

        }
    });




}

 }

activity_main.xml

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Mainactivity">

<fragment
    android:id="@+id/places_autocompletar"
    android:name="com.google.android.libraries.places.widget.AutocompleteSupportFragment"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
</fragment>


</LinearLayout>

在密钥部分,我在应用程序限制中将其设置为NONE

bsyang1225 回答:AutocompleteSupportFragment无法正常工作'无法加载搜索结果'Android

Please try with below code

private static final int AUTOCOMPLETE_REQUEST_CODE = 101;

 /*-- initializing Places API --**/
    if (!Places.isInitialized()) {
        Places.initialize(getActivity(),getActivity().getResources().getString(R.string.google_map_key));
    }

  /*-- function to open address search activity --**/
public void createAutoCompleteIntent() {
    if (getActivity() != null) {
        List<Place.Field> fields = Arrays.asList(Place.Field.ID,Place.Field.NAME,Place.Field.LAT_LNG,Place.Field.ADDRESS);
        Intent intent = new Autocomplete.IntentBuilder(
                AutocompleteActivityMode.FULLSCREEN,fields)
                .build(getActivity());
        startActivityForResult(intent,AUTOCOMPLETE_REQUEST_CODE);
    }
}

 /*-- Result of Auto complete google address search --**/
@Override
public void onActivityResult(int requestCode,int resultCode,Intent data) {
    if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            Place place = Autocomplete.getPlaceFromIntent(data);
            if (place.getLatLng() != null) {
                // reverse geoCoding to get Street Address,city,state and postal code

                Geocoder geocoder = new Geocoder(getActivity(),Locale.getDefault());
                try {
                    System.out.println("------addressList-----" + place.getAddress() + "             " + place.getName());
                    List<Address> addressList = geocoder.getFromLocation(
                            place.getLatLng().latitude,place.getLatLng().longitude,1);
                    System.out.println("------addressList-----" + addressList);
                    if (addressList != null && addressList.size() > 0) {
                        Address address = addressList.get(0);
                        System.out.println("------address-----" + address);
                        addressEd.setText(address.getAddressLine(0));
                        String featureName = "";
                        if (address.getFeatureName()!=null){
                            featureName = address.getFeatureName();
                        }
                        String throughFare = "";
                        if (address.getThoroughfare()!=null){
                            throughFare = address.getThoroughfare();
                        }
                        String streetAddress = featureName + " " + throughFare;
                        streetAddressEd.setText(streetAddress);
                        cityEd.setText(address.getLocality());
                        stateEd.setText(address.getAdminArea());
                        postCodeEd.setText(address.getPostalCode());
                        countryEd.setText(address.getCountryName());
                    }

                } catch (IOException e) {
                    Log.e(TAG,"Unable connect to Geocoder",e);
                }

            }
        } else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
            Status status = Autocomplete.getStatusFromIntent(data);
            if (getActivity() != null) {
                Util.showMessageBar(getActivity(),status.getStatusMessage());
            }
        } else if (resultCode == RESULT_CANCELED) {
            // The user canceled the operation.
        }
    }
}
本文链接:https://www.f2er.com/3061162.html

大家都在问