根据fragment生命周期的执行过程,初始化ID(findViewById)和控件点击事件,一定要放在fragment中的onActivityCreated方法中,在onCreateView中,只是进行根节点 rootView的初始化。
1.init()方法和handleData()方法放在 onActivityCreated中,而不是放在onCreateView。
解决方案如下:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_tabone, container,false);
Log.d("TestFragment","fragment111--onCreateView");
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initView();
handData();
}
/**
* 初始化Id
*/
public void initView(){
//获取地图控件引用
mMapView = (MapView) rootView.findViewById(R.id.bmapView);
mMapView.showZoomControls(false);//缩放按钮去掉
mMapView.showScaleControl(true);//比例尺显示
mBaiDuMap=mMapView.getMap();
//普通地图
mBaiDuMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
//设置缩放级别
mBaiDuMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().zoom(mMapScale).build()));
bt1=(Button) rootView.findViewById(R.id.bt1);
bt1.setOnClickListener(this);
}
/**
* 事件
*/
public void handData(){
initLocationParams();//初始化定位参数
m_locclient.start();//定位开始
m_lmCurrentMode = LocationMode.NORMAL;
mBaiDuMap.setMyLocationConfigeration(new MyLocationConfiguration(m_lmCurrentMode, true, null));
}