我正在Android平台上开发拼车应用程序(往返于大学)。在我的Google地图中,我有2个自动填充片段(分别称为“发件人”和“发件人”)和一个乘车请求按钮。应用知道用户的当前位置后,应将地点自动完成片段之一设置为大学的位置,并禁用对该片段的任何更改/编辑(即,如果用户的位置在大学中,它将设置“发件人”自动完成片段到大学所在地的功能。因此,请禁用该片段的功能,因为我不希望用户选择从大学以外的其他地方取书。
同样,如果他们的位置不在大学内,则意味着他们需要去大学。因此,第二个片段,“收件人”片段应固定在大学的位置。因此,应禁用该功能,以防止用户请求乘车去大学以外的其他地方。
我的问题是:如何禁用/启用场所自动完成片段?
我希望我正在努力实现的目标很明确。我将非常感谢任何有关如何解决此问题的帮助或想法。
从onConnected()和onLocationChanged()调用以下函数:
private void handleNewLocation(Location location) {
Log.i(TAG, location.toString());
//Place current location marker
LatLng currentlatLng = new LatLng(location.getLatitude(), location.getLongitude());
Location university = new Location("");
university.setLatitude(-33.8688);
university.setLongitude(151.2093);
float distanceInMeters = location.distanceTo(university);
/*
NOTE: this is assuming the user is rider.
Compute distance between current location and University,
if distance is >= 1000m, then set destination ("To" fragment) to University.
Otherwise (distance is < 1000m), set source location ("From" fragment) to University
*/
if(distanceInMeters >= 1000.0) {
toPlaceAutocomplete.setText("University");
} else {
fromPlaceAutocomplete.setText("University");
}
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(currentlatLng);
markerOptions.title("I am here!");
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
mCurrLocationMarker = mGoogleMap.addMarker(markerOptions);
//move map camera
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(currentlatLng));
mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(11));
}
在if语句中,设置了片段的文本后,我想禁用搜索。我怎样才能做到这一点?
最佳答案
您可以做的是获取AppCompatEditText
中包含的PlaceAutocompleteFragment
对象,然后调用AppCompatEditText.setEnabled(false)
禁用它。
PlaceAutocompleteFragment originAutocomplete = (PlaceAutocompleteFragment) getFragmentManager().findFragmentById(R.id.originAutocomplete);
AppCompatEditText originEditText = (AppCompatEditText) originAutocomplete.getView().findViewById(R.id.place_autocomplete_search_input);
originEditText.setEnabled(false);