Fragment 嵌套使用 Activity has been destoryed

Fragment 嵌套使用 Activity has been destoryed_第1张图片

 

 

 以上是我的类结构示意图。我使用了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中使用,可是第二次打开的时候,却报如下 的错误:

 

 


 Fragment 嵌套使用 Activity has been destoryed_第2张图片

 

 

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

你可能感兴趣的:(Activity)