두 개의 탭이있는 ActionBar가있는 MainActivity가 있습니다. 첫 번째 탭은 센서 데이터 값을 표시하고 두 번째 탭은지도를 표시하려고합니다. 는하지만 다음과 같이 MainActivity가 표시됩니다조각에 Google지도 구현하는 방법
두 번째 탭의 조각에지도를 구현하는 문제가있다 :
public class MainActivity extends Activity
{
private static final String DATA_FRAGMENT_BAR = "Data";
private static final String MAP_FRAGMENT_BAR = "Map";
private DataCollection mDataCollection;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Config.mContext = this;
ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME| ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab dataTab = actionBar.newTab().setText(DATA_FRAGMENT_BAR);
ActionBar.Tab mapTab = actionBar.newTab().setText(MAP_FRAGMENT_BAR);
Fragment dataFragment = new FragmentData();
Fragment mapFragment = new FragmentMap();
dataTab.setTabListener(new MyTabsListener(dataFragment));
mapTab.setTabListener(new MyTabsListener(mapFragment));
actionBar.addTab(dataTab);
actionBar.addTab(mapTab);
mDataCollection = DataCollection.getInstance();
}
....
}
TabsListener이 공용 클래스 MyTabsListener 다음과 같이 표시됩니다 ActionBar.TabListener 구현 { 개인 조각 단편;
public MyTabsListener(Fragment fragment)
{
this.fragment = fragment;
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
ft.replace(R.id.fragment_container, fragment);
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
ft.remove(fragment);
}
}
다음은지도 단편 클래스는 아래와 같이된다 : I은 라인에서 FragmentMap 클래스 브레이크 포인트 설정
public class FragmentMap extends Fragment
{
MapView mapView;
GoogleMap map;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.fragment_map, container, false);
// Gets the MapView from the XML layout and creates it
mapView = (MapView) v.findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
// Gets to GoogleMap from the MapView and does initialization stuff
map = mapView.getMap();
//map.getUiSettings().setMyLocationButtonEnabled(false);
//map.setMyLocationEnabled(true);
map.addMarker(new MarkerOptions().position(new LatLng(50.167003,19.383262)));
// Needs to call MapsInitializer before doing any CameraUpdateFactory calls
try
{
MapsInitializer.initialize(this.getActivity());
}
catch (GooglePlayServicesNotAvailableException e)
{
e.printStackTrace();
}
// Updates the location and zoom of the MapView
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(43.1, -87.9), 10);
map.animateCamera(cameraUpdate);
return v;
}
@Override
public void onResume()
{
mapView.onResume();
super.onResume();
}
@Override
public void onDestroy()
{
super.onDestroy();
mapView.onDestroy();
}
@Override
public void onLowMemory()
{
super.onLowMemory();
mapView.onLowMemory();
}
}
"mapView.onCreate (savedInstanceState)을;" savedInstanceState가 null이며 프로그램이 줄 이후에 중단됩니다.
누군가 도움이 될 수 있습니다. 미리 감사드립니다.
mapView.onResume()
전에 호출해야합니다. 내 문제는 MapFragment를 사용하면 TabsListener가 작동하지 않는다는 것입니다. 두 개의 탭이 있습니다. 탭 중 하나는 센서 값을 표시하는 것이므로 조각을 사용했습니다. – user2753594