Google maps 自动完成支持片段不工作;无法加载搜索结果';安卓

Google maps 自动完成支持片段不工作;无法加载搜索结果';安卓,google-maps,android-studio,google-places-api,Google Maps,Android Studio,Google Places Api,使用AutocompleteSupportFragment查找位置时遇到问题,因为它没有向我显示任何结果,并且我得到了一个错误。 我已经把新的代码,因为他们要求我的谷歌控制台键,但它仍然不工作。 这是我的密码 我没有密码限制,我不知道这是否是问题所在 已启用Places API 多谢各位 MainActivity.java public class MainActivity extends AppCompatActivity { PlacesClient placesClient; List

使用
AutocompleteSupportFragment
查找位置时遇到问题,因为它没有向我显示任何结果,并且我得到了一个错误。 我已经把新的代码,因为他们要求我的谷歌控制台键,但它仍然不工作。 这是我的密码 我没有密码限制,我不知道这是否是问题所在

已启用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();

        }
    });




}

 }
public类MainActivity扩展了AppCompatActivity{
地点客户地点客户;
List placesFields=Arrays.asList(Place.Field.ID,Place.Field.NAME,Place.Field.ADDRESS);
自动完成支持片段放置\u片段;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initPlaces();
setupplacesautomplete();
}
私人空间{
初始化(这个,getString(R.string.Places\u api\u key));
placesClient=Places.createClient(此);
}
私有无效设置位置自动完成(){
places_fragment=(AutocompleteSupportFragment)getSupportFragmentManager()
.findFragmentById(R.id.places\u autocompletar);
places\u fragment.setPlaceFields(placesFields);
places\u fragment.setOnPlaceSelectedListener(新的PlaceSelectionListener(){
@凌驾
已选择公共空位置(@NonNull Place){
Toast.makeText(MainActivity.this,“+place.getName(),Toast.LENGTH_SHORT.show();
}
@凌驾
public void onError(@NonNull状态){
Toast.makeText(MainActivity.this,“+status.getStatusMessage(),Toast.LENGTH_SHORT.show();
}
});
}
}
活动\u 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>

在“无”选项的“应用程序限制”中,我有一个密钥部分,请使用下面的代码进行尝试
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.
        }
    }
}
私有静态最终整数自动完成请求代码=101; /*--初始化PlacesAPI--**/ 如果(!Places.isInitialized()){ 初始化(getActivity(),getActivity().getResources().getString(R.string.google_map_key)); } /*--打开地址搜索活动的函数--**/ public void createAutoCompleteContent(){ 如果(getActivity()!=null){ 列表字段=数组.asList(Place.Field.ID,Place.Field.NAME,Place.Field.LAT_LNG,Place.Field.ADDRESS); Intent=new Autocomplete.IntentBuilder( 自动完成活动模式(全屏,字段) .build(getActivity()); startActivityForResult(意图、自动完成请求代码); } } /*--自动完成谷歌地址搜索的结果--**/ @凌驾 ActivityResult上的公共void(int请求代码、int结果代码、意图数据){ if(请求代码==自动完成请求代码){ if(resultCode==RESULT\u OK){ 地点=自动完成。getPlaceFromIntent(数据); if(place.getLatLng()!=null){ //反向地理编码以获取街道地址、城市、州和邮政编码 Geocoder Geocoder=新的地理编码器(getActivity(),Locale.getDefault()); 试一试{ System.out.println(“----地址列表----”+place.getAddress()+“”+place.getName()); List addressList=geocoder.getFromLocation( place.getLatLng().纬度,place.getLatLng().经度,1); System.out.println(“----地址列表------”+地址列表); if(addressList!=null&&addressList.size()>0){ 地址=地址列表。获取(0); System.out.println(“----地址------”+地址); address.setText(address.getAddressLine(0)); 字符串featureName=“”; if(address.getFeatureName()!=null){ featureName=地址。getFeatureName(); } 字符串throughFare=“”; if(address.getthorougheare()!=null){ throughFare=address.getthorougheare(); } 字符串streetAddress=featureName+“”+throughFare; streetAddressEd.setText(streetAddress); setText(address.getLocality()); stated.setText(address.getAdminArea()); postcoded.setText(address.getPostalCode()); countried.setText(address.getCountryName()); } }捕获(IOE异常){ Log.e(标签“无法连接到地理编码器”,e); } } }else if(resultCode==自动完成活动。结果\u错误){ 状态状态=自动完成。getStatusFromIntent(数据); 如果(getActivity()!=null){ Util.showMessageBar(getActivity(),status.getStatusMessage()); } }else if(resultCode==RESULT\u取消){ //用户取消了操作。 } } }
我尝试了这个,但仍然遇到同样的问题“无法加载搜索结果”。我已经将帐单帐户添加到我的项目中。您是否已将其添加到清单文件中?你是如何解决你的问题的?