У меня есть действие, которое дает пользователю возможность ввести данные своего адреса (текст адреса, номер здания / этажа / квартиры).
Я хочу получить доступ / сохранить то, что пользователь пишет в AutocompleteSupportFragment, особенно в тех случаях, когда API-интерфейс Places Autocomplete не находит никаких результатов, поэтому я мог использовать то, что пользователь ввел напрямую.
То, что я пробовал до сих пор: 1- метод onError AutocompleteSupportFragment.setOnPlaceSelectedListener не вызывается.2- Добавление TextWatcher в AutocompleteSupportFragment.a (где a является ссылкой на EditText) для получения данных в afterTextChanged, данные не захватываются.
Код XML:
<fragment
android:id="@+id/address_autocomplete_fragment"
android:name="com.google.android.libraries.places.widget.AutocompleteSupportFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Java-код:
Places.initialize(getApplicationContext(), Constants.PLACES_API_KEY);
// Initialize the AutocompleteSupportFragment.
autocompleteFragment = (AutocompleteSupportFragment) getSupportFragmentManager().findFragmentById(R.id.address_autocomplete_fragment);
// Specify the types of place data to return.
autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME, Place.Field.LAT_LNG, Place.Field.ADDRESS));
autocompleteFragment.setCountry("EG");
autocompleteFragment.a.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
Log.d(TAG, "User text: " + s);
}
});
// Set up a PlaceSelectionListener to handle the response.
autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
//Get info about the selected place.
Log.d(TAG, "Place: " + place.getName() + ", " + place.getId());
}
@Override
public void onError(Status status) {
//Handle the error.
Log.d(TAG, "An error occurred: " + status);
}
});
введите описание изображения здесь