主线程想得到子线程里面的执行结果,但是子线程又是在主线程执行后执行的,所以造成空指针异常,请问怎么处理?ShowAddress类
- public class ShowAddress {
- private MKSearch mKSearch;
- public static String <b>address</b>;
-
- //根据经纬度返回地址
- public void showAddress(GeoPoint point){
- mKSearch=new MKSearch();
- mKSearch.init(HiTaxiApplication.mBMapManager, new SearchListener());
- mKSearch.reverseGeocode(point);
- }
- class SearchListener implements MKSearchListener{//我查了一下,这个类是异步线程,我发现他总是在主线程执行完以后再执行
- @Override
- public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onGetShareUrlResult(MKShareUrlResult arg0, int arg1, int arg2) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onGetPoiDetailSearchResult(int arg0, int arg1) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
- // TODO Auto-generated method stub
- System.out.println("onGetAddrResult....."+arg1);
- ShowAddress.<b>address</b>=arg0.strAddr;
- System.out.println(ShowAddress.address);
- }
- }
- }
复制代码 主线程中调用showAddress ()方法,以得到地址信息
- int cLat = (int)(112.938247*1e6) ;
- int cLon = (int)(28.229519*1e6) ;
- GeoPoint p=new GeoPoint(cLon, cLat) ;
- new ShowAddress().showAddress(p);//执行根据经纬度返回地址的方法
-
- if(address!=null){
- System.out.println(address+"---------");
- }
复制代码
|