我正在使用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方法是导致问题的原因。删除该方法可使自动完成片段起作用。
答案 0 :(得分:0)
由于某种原因,OnActivityResult方法是导致问题的原因。删除该方法可使自动完成片段工作。在迁移到新的Places API之前,我一直在使用此方法。