为什么AutocompleteFragment在第一次搜索后没有响应?

时间:2019-08-28 03:55:12

标签: android google-maps android-studio googleplacesautocomplete

我正在使用autocomplete_fragment允许我的用户搜索地点。单击该片段后,它会打开搜索菜单,您可以键入内容,然后将显示建议。但是,单击任何位置后,“ onPlaceSelected”方法将无法运行。在那之后,单击片段也不会使其响应。

此片段位于带有地图的活动中。我尝试在另一个只有文本且按预期工作的活动上使用相同的片段(相同的代码和相同的布局)。使这种行为发生的活动可能会发生什么?

下面是显示onCreate方法的代码,该方法调用了其他一些我认为不会成为问题根源的方法。

protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);

        // Initialize Places.
        Places.initialize(getApplicationContext(), "myapikey");
        // Create a new Places client instance.
        PlacesClient placesClient = Places.createClient(this);

        // Initialize the AutocompleteSupportFragment.
        autocompleteFragment = (AutocompleteSupportFragment)
                getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment);

// Specify the types of place data to return.
        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(Place place) {
                // TODO: Get info about the selected place.
                Log.i("CHECK4", "Place: " + place.getName() + ", " + place.getId());
            }

            @Override
            public void onError(Status status) {
                // TODO: Handle the error.
                Log.i("CHECK4", "An error occurred: " + status);
            }
        });


        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapView = mapFragment.getView();
        mapFragment.getMapAsync(this);


        anchorView = findViewById(R.id.anchorView);
        buttonRoutes = findViewById(R.id.buttonRoutes);
        buttonMenu = findViewById(R.id.buttonMenu);

        buttonRoutes.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent routesIntent = new Intent(MapsActivity.this, RoutesActivity.class);
                startActivity(routesIntent);
            }
        });
        buttonMenu.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent routesIntent = new Intent(MapsActivity.this, MenuActivity.class);
                startActivity(routesIntent);
            }
        });

        routeIds = getIdsList();
        routeTitles = getTitlesList();
        routeCamera = getCameraList();
        routeZoom = getZoomList();

        initializeAllRoutes();
        initializeAllStops();


        RRdistance = new HashMap<Pair<Integer, Integer>, Double>();
        initializeRRdistance();

        geocoder = new Geocoder(MapsActivity.this, Locale.getDefault());

        checkFirstTime();
    }

由于某种原因,此特定活动中的某些内容破坏了自动完成片段。没有显示错误,什么也没发生。

编辑:我尝试删除活动的不同部分,直到自动完成片段起作用为止,然后我设法找到了正在发生的事情。出于某种原因,OnActivityResult方法是导致问题的原因。删除该方法可使自动完成片段起作用。

1 个答案:

答案 0 :(得分:0)

由于某种原因,OnActivityResult方法是导致问题的原因。删除该方法可使自动完成片段工作。在迁移到新的Places API之前,我一直在使用此方法。