百度地图检索错误,无法获得结果,觉得应该是异步任务导致的,但是还有些地方解释不通

发布于 2022-09-01 20:59:26 字数 1342 浏览 19 评论 0

这是之前的代码
private String city;
private String choice;

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    SDKInitializer.initialize(getApplicationContext());
    setContentView(R.layout.activity_main);
    mPoiSearch = PoiSearch.newInstance();
    String city ="武汉";
    String keyword ="餐馆";
    PoiCitySearchOption arg0 = new PoiCitySearchOption().city(city)
                    .keyword(choice).pageCapacity(10);
    mPoiSearch.searchInCity(arg0);
    
   mPoiSearch.setOnGetPoiSearchResultListener(new                   
             OnGetPoiSearchResultListener(){
                @Override
                public void onGetPoiResult(PoiResult arg0) {
                    List<PoiInfo> list = arg0.getAllPoi();
                    }

                @Override
                public void onGetPoiDetailResult(PoiDetailResult arg0) 
                    {  
                }
            });

这样写会直接报错,在onGetPoiResult回调方法里面得到的list永远是null,
但是如果把 mPoiSearch.searchInCity(arg0);这句话放到按钮的点击事件里面执行就可以拿到数据。自己反编译百度地图的文件看了下源码,没看出问题出在哪里。我感觉即使是因为异步任务的原因还没有拿到数据,那么这个setOnGetPoiSearchResultListener设置的监听还有什么用呢,这个监听的本意不就是想在返回数据后触发onGetPoiResult方法吗,所以我又觉得猜想异步任务也说不通。所以我很想知道在启动应用到点击按钮这中间究竟做了什么,发起检索一共就两个步骤:封装一个PoiCitySearchOption对象,发起检索;这样能出什么问题,唉,头大额

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

为你拒绝所有暧昧 2022-09-08 20:59:26

“如果把 mPoiSearch.searchInCity(arg0);这句话放到按钮的点击事件里面执行就可以拿到数据”
说明是有正常的回调的
放在外面则不行,看起来感觉是它的初始化是异步并且需要一定的时间的,所以你就算有mPoiSearch.searchInCity(arg0);也没有真正执行到

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文