Fragment 嵌套使用 Activity has been destoryed

 

 

 以上是我的类结构示意图。我使用了Fragment的嵌套。

Status_Manage_Act的代码如下所示:

 

 package com.doget.dingsong_c;


import java.util.List;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.doget.dingsong_c.bll.FetchMyDeliveryData;
import com.doget.dingsong_c.bll.Fetch_Deli_Customer_Data;
import com.doget.dingsong_c.bll.IFetchData;
import com.doget.dingsong_c.view.AbBaseView;
import com.doget.dingsong_c.view.status_main_of_recept_view;
import com.doget.dingsong_c.view.Delivering_Show_MyDeli_View;
import com.doget.dingsong_c.view.Status_Main_Contract_Managent;
import com.doget.dingsong_c.view.Status_Main_Mydelivery;
import com.doget.dingsong_c_models.CustomerModel;
import com.doget.dingsong_c_models.DeliverItemModel;
import com.doget.dingsong_c_models.ResultModel;

/**
 * 订餐状态管理界面(主界面)
 * 
@author Wu
 *
 
*/
public class Status_Manage_Act extends DGAct implements View.OnClickListener{

    /**
     * 地图列表
     
*/
    private status_main_of_recept_view delivering_list=null;
    ImageView tab_status_recept,tab_mydelivery,tab_contract_manage,tab_option;
    /**
     * 已经完成的数据列表
     
*/
    private Status_Main_Mydelivery  mydeliver=null;
    
    private Status_Main_Contract_Managent Contract_manager=null;
    public Status_Manage_Act() {
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);        
        getTitleBar().setVisibility(View.GONE);        
        setAbContentView(R.layout.status_manage_main);
        initView();
        doShowViewList();
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.tab_status_recept:
            doShowViewList();
            break;
        case R.id.tab_mydelivery:

                doShowMydelivery();
            
            break;
        case R.id.tab_contract_manage:
            doShowContractManage();
            break;
        case R.id.tab_option:
            doShowTabOption();
            break;
        default:
            break;
        }
    }
    /**
     * 展示周边可用订单状态
     
*/
    private void doShowViewList()
    {

        if(delivering_list==null)
        {
            delivering_list=new status_main_of_recept_view();    
            //delivering_list.setOnAddtaskListerner(this);
            Fetch_Deli_Customer_Data fetch=new Fetch_Deli_Customer_Data(new IFetchData<DeliverItemModel>() {
                
                @Override
                public void onSuccess(List<DeliverItemModel> datas) {
                    // TODO Auto-generated method stub
                    if(datas.size()>0)
                    {
                        delivering_list.initInfo(Status_Manage_Act.this, datas);
                        CV(delivering_list);
                        //getChildFragmentManager().beginTransaction().replace(R.id.fragment_delivering, delivering_list).commit();
                    }
                    removeProgressDialog();
                }
                
                @Override
                public void onPrevious() {
                    // TODO Auto-generated method stub
                    showProgressDialog("Loading......");
                }
                
                @Override
                public void onFetching(int progress) {
                    // TODO Auto-generated method stub
                    
                }
                
                @Override
                public void onFail(ResultModel result) {
                    // TODO Auto-generated method stub
                    
                }
            }, "");
            delivering_list.setFetch(fetch);
            

        }
        else
        {
            CV(delivering_list);
        }
    
    }
    
    private void doShowMydelivery()
    {
        mydeliver=new Status_Main_Mydelivery();
        CV(mydeliver);    
    }
    
    private void doShowContractManage()
    {
        Contract_manager=new Status_Main_Contract_Managent();
        CV(Contract_manager);
    }
    
    void doShowTabOption()
    {
        Intent intent =new Intent();
        intent.setClass(this, Ps_Info_Main_Act.class);
        startActivity(intent);
    }
    private void initView()
    {
        tab_status_recept=(ImageView)findViewById(R.id.tab_status_recept);
        tab_status_recept.setOnClickListener(this);
        tab_mydelivery=(ImageView)findViewById(R.id.tab_mydelivery);
        tab_mydelivery.setOnClickListener(this);
        tab_contract_manage=(ImageView)findViewById(R.id.tab_contract_manage);
        tab_contract_manage.setOnClickListener(this);
        tab_option=(ImageView)findViewById(R.id.tab_option);
        tab_option.setOnClickListener(this);
    }
    
    public void CV(AbBaseView baseview)
    {
        if(baseview!=null)
        {
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_status_main, baseview).commit();
        }
        
    }
    
    boolean isExit=false;
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if (keyCode == KeyEvent.KEYCODE_BACK) {  
            if(!isExit) {  
                isExit = true;    
                Toast.makeText(getApplicationContext(),getResources().getString(R.string.repeat_notice), Toast.LENGTH_SHORT).show();  
                new Handler().postDelayed(new Runnable(){  
                    public void run(){  
                        isExit = false;  
                    }  
                }, 2000);;  
                return false;  
            }  
        }
        return super.onKeyDown(keyCode, event);  
    }
}

 

 

status_main_of_recept_view .java如下所示
package com.doget.dingsong_c.view;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Gallery;
import android.widget.ListView;

import com.doget.dingsong_c.R;
import com.doget.dingsong_c.adapter.DeliverItemShopAdapter;
import com.doget.dingsong_c.adapter.Deliver_Order_list_Item_Adapter;
import com.doget.dingsong_c.bll.Fetch_Deli_Customer_Data;
import com.doget.dingsong_c.bll.IFetchData;
import com.doget.dingsong_c.bll.baseFetchData;
import com.doget.dingsong_c.bll.baseFetchData.IRefresh;
import com.doget.dingsong_c.wekit.HorizontalListView;
import com.doget.dingsong_c_models.CustomerModel;
import com.doget.dingsong_c_models.DeliverItemModel;
import com.doget.dingsong_c_models.IAddTask;
import com.doget.dingsong_c_models.ResultModel;
import com.doget.wekit.pullrefresh.PullToRefreshView;

/**
 *以列表的方式展示配送的数据
 * 
@author Wu
 *
 
*/
public class status_main_of_recept_view extends AbBaseView {

    
    View myView;
    Context myContext;
    List<DeliverItemModel> myLists = new ArrayList<DeliverItemModel>();
    ListView myListView;
    Deliver_Order_list_Item_Adapter myAdapter = null;
    
    private IAddTask onAddtaskListerner;
    /**
     * 取数据器
     
*/
    Fetch_Deli_Customer_Data fetch;    
    /**
     * 列表展示数据集合
     
*/
    List<CustomerModel> mData=new ArrayList<CustomerModel>();
    
    @SuppressWarnings("deprecation")
    HorizontalListView gallery_shops;
    DeliverItemShopAdapter myshop_adapter;
    
    
    public status_main_of_recept_view() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public void ShowNextView() {
        // TODO Auto-generated method stub

    }

    @Override
    public void ShowPreviousView() {
        // TODO Auto-generated method stub

    }

    @Override
    public void SetView(IBaseView baseView) {
        // TODO Auto-generated method stub

    }

    @Override
    public void ShowView() {
        // TODO Auto-generated method stub

    }

    @Override
    public void onDestory() {
        // TODO Auto-generated method stub

    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    }
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub        
        initView(inflater);
        return mBaseView;
    }
    /**
     * 初始化视图
     * 
@param inflater
     
*/
    private void initView(LayoutInflater inflater)
    {
        mBaseView=inflater.inflate(R.layout.status_main_of_recept, null);
        myListView = (ListView) mBaseView.findViewById(R.id.list_item);
        gallery_shops=(HorizontalListView)mBaseView.findViewById(R.id.horizontal_shops);
        myshop_adapter=new DeliverItemShopAdapter(getActivity(), myLists);
        gallery_shops.setAdapter(myshop_adapter);
        if(myLists.size()>0)
        {
            mData=myLists.get(0).getList_customers();
            myAdapter = new Deliver_Order_list_Item_Adapter(myContext, mData);
        }
        else
        {
            myAdapter = new Deliver_Order_list_Item_Adapter(myContext,mData);    
        }
        myAdapter.setAddtaskListerner(onAddtaskListerner);
        
        if(fetch!=null)
        {
            //配置pullrefresh
            fetch.setMyFetch(new IFetchData<DeliverItemModel>() {
                
                @Override
                public void onSuccess(List<DeliverItemModel> datas) {
                    // TODO Auto-generated method stub
                    if(datas.size()>0)
                    {
                        mData=datas.get(0).getList_customers();
                        myAdapter.notifyDataSetChanged();
                    }

                    
                }
                
                @Override
                public void onPrevious() {
                    // TODO Auto-generated method stub
                    
                }
                
                @Override
                public void onFetching(int progress) {
                    // TODO Auto-generated method stub
                    
                }
                
                @Override
                public void onFail(ResultModel result) {
                    // TODO Auto-generated method stub
                    
                }
            });
            
            main_pull_refresh_view=(PullToRefreshView)mBaseView.findViewById(R.id.main_pull_refresh_view);
            fetch.refreshView=main_pull_refresh_view;
            fetch.Irefresh=new IRefresh() {

                @Override
                public void OnHeaderRefresh(baseFetchData base) {
                    // TODO Auto-generated method stub
                    base.doLoadMore();
                }

                @Override
                public void OnFooterRefresh(baseFetchData base) {
                    // TODO Auto-generated method stub
                    base.doLoadMore();
                }
            };
            initRefreshView(main_pull_refresh_view, fetch);
        }
        
        myListView.setAdapter(myAdapter);
        
        initMapView();
        
    }
    /**
     * 初始化数据
     
*/
    public void initInfo(Context context, List<DeliverItemModel> lists) {
        myContext = context;
        if(lists!=null)
        {
            myLists = lists;
        }
        
    }
    /**
     * 初始化地图界面
     
*/
    private void initMapView()
    {
        Delivering_Show_Map_View mapview=new Delivering_Show_Map_View();
        getChildFragmentManager().beginTransaction().replace(R.id.fragment_map, mapview).commitAllowingStateLoss();
    }

    public IAddTask getOnAddtaskListerner() {
        return onAddtaskListerner;
    }

    public void setOnAddtaskListerner(IAddTask onAddtaskListerner) {
        this.onAddtaskListerner = onAddtaskListerner;
    }

    @Override
    public void OnGetData(int which) {
        // TODO Auto-generated method stub
        
    }

    public Fetch_Deli_Customer_Data getFetch() {
        return fetch;
    }

    public void setFetch(Fetch_Deli_Customer_Data fetch) {
        this.fetch = fetch;
    }

} 

 Delivering_Show_Map_View.java如下所示

package com.doget.dingsong_c.view;

import java.util.ArrayList;
import java.util.List;

import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.ItemizedOverlay;
import com.baidu.mapapi.map.LocationData;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationOverlay;
import com.baidu.mapapi.map.OverlayItem;
import com.baidu.mapapi.map.PopupClickListener;
import com.baidu.mapapi.map.PopupOverlay;
import com.baidu.platform.comapi.basestruct.GeoPoint;
import com.doget.dingsong_c.Home_Act;
import com.doget.dingsong_c.R;
import com.doget.dingsong_c.bll.FetchMapItemsData;
import com.doget.dingsong_c.bll.IFetchData;
import com.doget.dingsong_c.test.DataCreateFactory;
import com.doget.dingsong_c.utils.util_maplocal;
import com.doget.dingsong_c.utils.viewfactory;
import com.doget.dingsong_c_models.IAddTask;
import com.doget.dingsong_c_models.MapOrderItemModel;
import com.doget.dingsong_c_models.ResultModel;
import com.doget.push.AbMessage;
import com.doget.push.IMessage;
import com.doget.push.MessageSendState;

/**
 * 以地图的方式展示送餐的数据
 * 
@author Wu
 *
 
*/
public class Delivering_Show_Map_View extends AbBaseView {

    BMapManager mBMapMan = null;
    MapView mMapView = null;

    PopupOverlay poplay=null;
    FetchMapItemsData fetch;
    /**
     * catchview弹出层的视图缓存
     
*/
    View cacheview;
    
    List<MapOrderItemModel> maps=new ArrayList<MapOrderItemModel>();
    
    LocationClient mLocClient;
    LocationData locData = null;
    MyLocationOverlay myLocationOverlay = null;
     private MapController mMapController = null;
     /**
      * 当前选中的地图点对象
      
*/
     MapOrderItemModel map;
     public MyLocationListenner myListener = new MyLocationListenner();
     private IAddTask addtaskListerner=null;
     
    public Delivering_Show_Map_View() {
        // TODO Auto-generated constructor stub
    }
    
    @Override
    public void ShowNextView() {
        // TODO Auto-generated method stub

    }

    @Override
    public void ShowPreviousView() {
        // TODO Auto-generated method stub

    }

    @Override
    public void SetView(IBaseView baseView) {
        // TODO Auto-generated method stub

    }

    @Override
    public void ShowView() {
        // TODO Auto-generated method stub

    }

    @Override
    public void onDestory() {
        // TODO Auto-generated method stub

    }

    public void initInfo()
    {
        
    }
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

    }
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        initView(inflater);
        return mBaseView;
    }
    
    private void initView(LayoutInflater inflater)
    {
        maps=DataCreateFactory.getMapsItem();
        // 注意:请在试用setContentView前初始化BMapManager对象,否则会报错
        mBaseView = inflater.inflate(R.layout.deliver_map_view, null);
        //setAbContentView(R.layout.deliver_map_view);
        mMapView = (MapView) mBaseView.findViewById(R.id.bmapsView);
        mMapView.setBuiltInZoomControls(true);
        // 设置启用内置的缩放控件
        MapController mMapController = mMapView.getController();
        // 得到mMapView的控制权,可以用它控制和驱动平移和缩放
        GeoPoint point = new GeoPoint((int) (39.915 * 1E6),
                (int) (116.404 * 1E6));
        // 用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
        mMapController.setCenter(point);// 设置地图中心点
        mMapController.setZoom(12);// 设置地图zoom级别
        
        fetch=new FetchMapItemsData(new IFetchData<MapOrderItemModel>() {
            
            @Override
            public void onSuccess(List<MapOrderItemModel> datas) {
                // TODO Auto-generated method stub
                if(datas.size()>0)
                {
                    maps=datas;
                    dolocal();
                    initMyOverlay();
                    initPopEvent();
                    
                }
            }
            
            @Override
            public void onPrevious() {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public void onFetching(int progress) {
                // TODO Auto-generated method stub
                
            }
            
            @Override
            public void onFail(ResultModel result) {
                // TODO Auto-generated method stub
                
            }
        }, "");

    }
    
    /**
     * 进行定位操作
     
*/
    private void dolocal() {
        util_maplocal util = new util_maplocal(getActivity(),
                new util_maplocal.ILocalCallback() {
                    @Override
                    public void localCallback(String address, double lon,
                            double latitude) {                        
                        // TODO Auto-generated method stub
                        MyLocationOverlay myLocationOverlay = new MyLocationOverlay(
                                mMapView);
//                        // 自己设定图标
//                        myLocationOverlay.setMarker(mContext.getResources().getDrawable(
//                                R.drawable.icon_map_item));
                        LocationData locData = new LocationData();
                        // 手动将位置源置为天安门,在实际应用中,请使用百度定位SDK获取位置信息,要在SDK中显示一个位置,需要使用百度经纬度坐标(bd09ll)
                        locData.latitude = latitude;
                        locData.longitude = lon;
                        locData.direction = 5.0f;
                        locData.accuracy=5;
                        myLocationOverlay.setData(locData);                        
                        mMapView.getOverlays().add(myLocationOverlay);
                         myLocationOverlay.enableCompass();
                        mMapView.refresh();
                        mMapView.getController().animateTo(
                                new GeoPoint((int) (locData.latitude * 1e6),
                                        (int) (locData.longitude * 1e6)));
                    }
                });
    }
    
    /**
     * 初始化overlay层
     
*/
    private void initMyOverlay()
    {
        /**
         *  在想要添加Overlay的地方使用以下代码,
         *  比如Activity的onCreate()中
         
*/
        //准备要添加的Overlay
        double mLat1 = 39.90923;
        double mLon1 = 116.397428;
        double mLat2 = 39.9022;
        double mLon2 = 116.3922;
        double mLat3 = 39.917723;
        double mLon3 = 116.3722;
        // 用给定的经纬度构造GeoPoint,单位是微度 (度 * 1E6)
        GeoPoint p1 = new GeoPoint((int) (mLat1 * 1E6), (int) (mLon1 * 1E6));
        GeoPoint p2 = new GeoPoint((int) (mLat2 * 1E6), (int) (mLon2 * 1E6));
        GeoPoint p3 = new GeoPoint((int) (mLat3 * 1E6), (int) (mLon3 * 1E6));
        //准备overlay图像数据,根据实情情况修复
        Drawable mark= mContext.getResources().getDrawable(R.drawable.icon_map_item);
         
        //创建IteminizedOverlay
        DGOverlay itemOverlay = new DGOverlay(mark, mMapView);
        //将IteminizedOverlay添加到MapView中 
        mMapView.getOverlays().clear();
        mMapView.getOverlays().add(itemOverlay);
        
        
        for(int i=0;i<maps.size();i++)
        {
            //现在所有准备工作已准备好,使用以下方法管理overlay.
            
//添加overlay, 当批量添加Overlay时使用addItem(List<OverlayItem>)效率更高
            MapOrderItemModel item=maps.get(i);
            GeoPoint point=new GeoPoint((int) (item.getLatitude() * 1E6), (int) (item.getLongitude() * 1E6));
            OverlayItem lay_item=new OverlayItem(point, "", "");
            lay_item.setMarker(mark);
            itemOverlay.addItem(lay_item);
        }

        mMapView.refresh();
        //删除overlay .
        
//itemOverlay.removeItem(itemOverlay.getItem(0));
        
//mMapView.refresh();
        
//清除overlay
        
// itemOverlay.removeAll();
        
// mMapView.refresh();
    }

    
    /**
     * 弹出层操作初始化
     
*/
    private void initPopEvent()
    {
        PopupClickListener popListernere=new PopupClickListener() {
            
            @Override
            public void onClickedPopup(int argindex) {
                ////在此处理pop点击事件,index为点击区域索引,点击区域最多可有三个  (此处可以做为二级界面)
                Log.i("map", "popevent"+argindex);
                if(map!=null)
                {
                    if(map.getType().equals("0"))
                    {
                        //商家启用进行打电话
                        T("开始打电话");
                    }
                    else if(map.getType().equals("1"))
                    {
                        //开始送货
                        T("开始送货");
                        AbMessage msg=new AbMessage();
                        msg.from="carrier";
                        msg.ambition="dingsong_client";
                        msg.content="下一个快餐就是你了哦!!";
                        Home_Act.mian.mymanager.doSendMsg(msg, new IMessage() {
                            
                            @Override
                            public void receiveMessage(AbMessage message) {
                                // TODO Auto-generated method stub
                                
                            }
                            
                            @Override
                            public void initState(boolean issuccess) {
                                // TODO Auto-generated method stub
                                
                            }
                            
                            @Override
                            public void callbackSendResult(MessageSendState msgstate) {
                                // TODO Auto-generated method stub
                                
                            }
                        });

                        maps.remove(map);
                        initMyOverlay();
                        initPopEvent();
                        dolocal();
                        if(addtaskListerner!=null)
                        {
                            addtaskListerner.OnAddTask(map.Conver2Customer());
                        }
                    }
                }
                poplay.hidePop();
            }
        };
        poplay=new PopupOverlay(mMapView, popListernere);
    }
    
    /*
     * 要处理overlay点击事件时需要继承ItemizedOverlay 不处理点击事件时可直接生成ItemizedOverlay.
     
*/
    class DGOverlay extends ItemizedOverlay<OverlayItem> {
        // 用MapView构造ItemizedOverlay
        public DGOverlay(Drawable mark, MapView mapView) {
            super(mark, mapView);
        }

        protected boolean onTap(int index) {
            // 在此处理item点击事件
            System.out.println("item onTap:-------- " + index);
            initPopView(index);
            return true;
        }

        public boolean onTap(GeoPoint pt, MapView mapView) {
            // 在此处理MapView的点击事件,当返回 true时
            super.onTap(pt, mapView);
            return false;
        }
    }
    
    /**
     * 弹出指定平铺层上面的数据
     * 
@param index
     
*/
    public void initPopView(int index)
    {
        // p1 116.491349,40.005386
        
// p2 116.492094,40.005282
        
// p3 116.491609,40.005206
        map=maps.get(index);
        
        if(map.getType().equals("0"))
        {
            Log.i("map", "    map.type====000000    "+map.getType());
            //商家数据
            cacheview=LayoutInflater.from(mContext).inflate(R.layout.map_pop_res, null);            
            
            Bitmap[] bitmaps={viewfactory.ConvertToBitmap(cacheview)};
            
            //弹窗弹出位置
            GeoPoint ptTAM = new GeoPoint((int)(map.getLatitude() * 1E6), (int) (map.getLongitude() * 1E6));
            //弹出pop,隐藏pop
            poplay.showPopup(bitmaps, ptTAM, 32);
        }
        else if(map.getType().equals("1"))
        {
            Log.i("map", "    map.type====11111   "+map.getType());
            //客户座标//map_pop_cus最外层不可以是relativeLayout.xml
            cacheview=LayoutInflater.from(mContext).inflate(R.layout.map_pop_cus, null);
            Bitmap[] bitmaps={viewfactory.ConvertToBitmap(cacheview)};
            
            //弹窗弹出位置
            GeoPoint ptTAM = new GeoPoint((int)(map.getLatitude() * 1E6), (int) (map.getLongitude() * 1E6));
            //弹出pop,隐藏pop
            poplay.showPopup(bitmaps, ptTAM, 32);
        }
        //  pop.hidePop();
    }

    
    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        mMapView.destroy();
        if (mLocClient != null)
            mLocClient.stop();
        super.onDestroy();
    }
    
    @Override
    public void onPause() {
        // TODO Auto-generated method stub
        mMapView.onPause();
        super.onPause();
        
    }
    
    @Override
    public void onResume() {
        // TODO Auto-generated method stub
        mMapView.onResume();
        super.onResume();
    }
    
    
    /**
     * warning: this method is callback by activity manager; Be careful it's
     * lifecycle : It is called after oncreate , before oncreateview; see
     * detail:
     * 
http://developer.android.com/reference/android/support/v4/app/Fragment
     * .html#setUserVisibleHint(boolean)
     
*/
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {        //核心方法,避免因Fragment跳转导致地图崩溃
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser == true) {
            // if this view is visible to user, start to request user location
            startRequestLocation();
        } else if (isVisibleToUser == false) {
            // if this view is not visible to user, stop to request user
            
// location
            stopRequestLocation();
        }
    }
 
    private void stopRequestLocation() {
        if (mLocClient != null) {
            mLocClient.unRegisterLocationListener(myListener);
            mLocClient.stop();
        }
    }
 
    long startTime;
    long costTime;
 
    private void startRequestLocation() {
        // this nullpoint check is necessary
        if (mLocClient != null) {
            mLocClient.registerLocationListener(myListener);
            mLocClient.start();
            mLocClient.requestLocation();
            startTime = System.currentTimeMillis();
        }
    }
 
    /**
     * 监听函数,有新位置的时候,格式化成字符串,输出到屏幕中
     
*/
    public class MyLocationListenner implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            // TODO Auto-generated method stub
            if (location == null)
                return;
            costTime = System.currentTimeMillis() - startTime;
            Log.d("MapFragment", "" + costTime);
            locData.latitude = location.getLatitude();
            locData.longitude = location.getLongitude();
            locData.accuracy = location.getRadius();
            locData.direction = location.getDerect();
            myLocationOverlay.setData(locData);
            mMapView.refresh();
            mMapController.animateTo(new GeoPoint((int) (locData.latitude * 1e6), (int) (locData.longitude * 1e6)));
            // if request location success , stop it
            stopRequestLocation();
        }

        @Override
        public void onReceivePoi(BDLocation arg0) {
            // TODO Auto-generated method stub
            
        }
        }

    public IAddTask getAddtaskListerner() {
        return addtaskListerner;
    }

    public void setAddtaskListerner(IAddTask addtaskListerner) {
        this.addtaskListerner = addtaskListerner;
    }

    @Override
    public void OnGetData(int which) {
        // TODO Auto-generated method stub
        
    }
    
 

} 

 

 运行时问题出现了。第一次可以正常的打开status_main_of_recept_view,可以在主界面Activity中使用,可是第二次打开的时候,却报如下 的错误:

 

 


 

 

 

大家帮忙看看。我忍这个问题很久了。一直没找到原因。谢谢!!! 

posted @ 2014-03-11 17:12  Wsf5918  阅读(1345)  评论(0编辑  收藏  举报