Я использую новые места SDK.Мой build.gradle:
implementation 'com.google.android.libraries.places:places:1.0.0'
Мой код:
FragmentManager supportFragmentManager = getChildFragmentManager();
FragmentTransaction ft = supportFragmentManager.beginTransaction();
if(mAutocompleteFragment == null) {
mAutocompleteFragment = new AutocompleteSupportFragment();
ft.add(R.id.places_container, mAutocompleteFragment, AutocompleteSupportFragment.class.getSimpleName());
ft.commit();
}
List<Place.Field> places = new ArrayList<>();
places.add(Place.Field.ID);
places.add(Place.Field.NAME);
places.add(Place.Field.ADDRESS);
mAutocompleteFragment.setPlaceFields(places); //throws NPE getView() is null
Бросает NPE, потому что он пытается установить представление включенным в этом последнем методе, и представление является нулевым.Я подозреваю, что жизненный цикл фрагмента не был вызван (onViewCreated).Как заставить форсированный жизненный цикл или ждать полного цикла фрагмента?
Однако, когда я выбираю автозаполнение вспомогательного фрагмента, я получаю:
android.content.ActivityNotFoundException: Невозможно выполнитьнайти явный класс активности {com.activehours.debug / com.google.android.libraries.places.widget.AutocompleteActivity};Вы объявили об этом действии в вашем AndroidManifest.xml?
Вот мой манифест:
<activity
android:name="com.google.android.libraries.places.widget.AutocompleteActivity"
android:theme="@style/PlacesAutocompleteThemeOverlay">
</activity>
В документации не упоминается включение этого действия вмой манифестПомогите!
РЕДАКТИРОВАТЬ: Я обошел NPE, расширив класс следующим образом:
public class AHAutocompleteSupportFragment extends AutocompleteSupportFragment
{
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
List<Place.Field> places = new ArrayList<>();
places.add(Place.Field.ID);
places.add(Place.Field.NAME);
places.add(Place.Field.ADDRESS);
this.setPlaceFields(places);
}
}
Однако я все еще получаю "Деятельность, не объявленная вManifest».