android - 我在 Android 中使用新的 Places SDK。AutocompleteSupportFragment 要求我将活动添加到清单中
问题描述
我正在使用新的地方 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)。我将如何强制生命周期或等待片段完全循环?
但是,当我选择 autocompletesupportfragment 时,我得到:
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);
}
}
但是,我仍然收到“清单中未声明的活动”。
解决方案
很可能您必须添加一个intent-filter
,以便它找到它所期望的:
<activity
android:name="com.google.android.libraries.places.widget.AutocompleteActivity"
android:theme="@style/PlacesAutocompleteThemeOverlay">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
推荐阅读
- python - 导入其他 Python 文件 - 调用路径
- laravel-7 - 我怎样才能得到另一个班级的ID?
- dart - Dart:嵌套在地图中的地图
- javascript - Mongoose 对自定义字符串 _id 的引用
- reactjs - 更新未在反应前端显示的已更改项目的状态
- python - 涵盖所有案例的最少项目数
- python - Aiohttp异步获取代理请求不起作用
- javascript - 如何使用 JavaScript 设置弹出窗口的小数位数?
- git - 跨源分支 git repo(Bitbucket 和 GitHub)
- go - vim-go with coc.nvim:如何重命名包?