ViewPager内未触发SupportPlaceAutocompleteFragment的OnPlaceSelectedListener

Ale*_*t83 4 android android-viewpager google-places-api

我的应用程序有一个带有viewPager和4个片段的活动。在一个片段中,我添加了一个Google SupportPlaceAutocompleteFragment

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.area_swipe_fragment, container, false);



    SupportPlaceAutocompleteFragment autocompleteFragment = (SupportPlaceAutocompleteFragment)
            getChildFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);

    autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(Place place) {
            Toast.makeText(ctx, "do something", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onError(Status status) {
        }
    });






    return view;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是onPlaceSelectedListener永远不会被解雇,而我无法获得所选地点的结果。而是被解雇onActivityResults()放置在第二个片段中。我尝试onActivityResults()在第一个片段中使用a ,但是它不会被触发,总是在第二个片段中执行一个。

有任何想法吗?

And*_*ewR 5

文档

如果您的片段嵌套在另一个片段中,则您的应用程序还必须将onActivityResult()调用转发到包含的片段,如以下代码片段所示:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    autocompleteFragment.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)

也许这就是解决方案。

  • 从包含的片段中覆盖 onActivityResult 仍然不起作用,因为 PlaceSelectionListener 在我的代码中仍然没有被触发。因此,我通过覆盖容器活动中的 onActivityResult 并从那里调用片段的 onActivityResult 找到了一种解决方法。即使使用此解决方案,PlaceSelectionListener 也不会被触发,因此我已将代码放置在包含片段的覆盖 onActivityResult 中选择地址后执行。 (2认同)