RunTracker(33章36章)

      34章里面只有个添加Run,感觉不太好,自己加了个删除Run的。结果发现删除Run后RunListFragment不更新,即便是执行了notifyDataSetChanged()。百度了一下才发现cursor需要requery一下才能刷新。网上有说可以auto requery,试了下不起作用,不知道是没用还是哪儿写错了。而且文档里面也不推荐讲requery的flag设置为true。

      35章的代码有个bug。在点进RunFragment,迅速点start然后退回到RunListFragment(duration长的话更容易重现),再进RunFragment发现button都disable了,关掉再重新打开app发现多了一个Run,而且还处于tracking状态。原因就是RunLoader还没有加载好的情况下mRun是null的,app会重新建一个Run。fix也很简单,加一个flag,加载完成后在enable开始按钮。

      36章用的是Google Map API v2,最近好像被墙了,弄了个高德地图代替。API用起来差不多,就是打开infowindow需要加几个Listener监听触摸事件。然后infowindow里面字符串需要换行的话加上“\n”就行了。

 1 aMap.setInfoWindowAdapter(new InfoWindowAdapter() {
 2 
 3     @Override
 4     public View getInfoContents(Marker arg0) {
 5         // TODO Auto-generated method stub
 6         return null;
 7     }
 8 
 9     @Override
10     public View getInfoWindow(Marker arg0) {
11         // TODO Auto-generated method stub
12         return null;
13     }
14     
15 });
16 
17 aMap.setOnMarkerClickListener(new OnMarkerClickListener() {
18 
19     @Override
20     public boolean onMarkerClick(Marker marker) {
21         // TODO Auto-generated method stub
22         marker.showInfoWindow();
23         return false;
24     }
25     
26 });
27 
28 aMap.setOnMapClickListener(new OnMapClickListener() {
29 
30     @Override
31     public void onMapClick(LatLng arg0) {
32         // TODO Auto-generated method stub
33         if (startMarker != null) {
34             startMarker.hideInfoWindow();
35         }
36         if (endMarker != null) {
37             endMarker.hideInfoWindow();
38         }
39     }
40     
41 });

 

更多相关文章
一周排行