ビュー ページャーでの Google マップ フラグメントの表示に問題があります。ビューページャーというアクティビティがあり、ビューページャーのフラグメントの 1 つに Google マップ 2.0 フラグメントがあります。
フラグメントのレイアウト:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/no_profile_dialog_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="@string/about_screen_info" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:scaleType="fitCenter"
android:src="@drawable/banner_bf" />
<fragment
android:id="@+id/about_map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"
android:tag="AboutMapFragment"
map:mapType="normal" />
</LinearLayout>
フラグメント クラス:
public class AboutFragment extends Fragment {
public static final String TAG = AboutFragment.class.getSimpleName();
private SupportMapFragment mapFragment;
private GoogleMap map;
public static AboutFragment newInstance() {
AboutFragment fragment = new AboutFragment();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
return inflater.inflate(R.layout.fragment_about, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FragmentManager fm = getChildFragmentManager();
mapFragment = (SupportMapFragment) fm.findFragmentById(R.id.about_map);
if (mapFragment == null) {
mapFragment = SupportMapFragment.newInstance();
fm.beginTransaction().replace(R.id.about_map, mapFragment).commit();
fm.executePendingTransactions();
}
}
@Override
public void onResume() {
super.onResume();
if (map == null) {
map = mapFragment.getMap();
if(map != null){
Log.d(TAG, "map in AboutFragment initialized!");
drawPositionOnMap();
}else{
Log.d(TAG, "map in AboutFragment is null!");
}
}
}
private void drawPositionOnMap() {
LatLng latLng = new LatLng(20, 50);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 20));
map.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null);
map.addMarker(new MarkerOptions().position(latLng));
map.setMyLocationEnabled(true);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
((HomeActivity)getActivity()).getCurrentSlidingMenu().addIgnoredView(view.findViewById(R.id.about_map));
}
}
したがって、問題は次のとおりです。このフラグメントに切り替えると、マップが初期化されたように見えますが、移動可能なマップの代わりに、0,0 座標を中心とする静的なマップ スナップショットが表示されます。
しかし!デバイスの画面をロックしてからロックを解除すると、マップは正常に初期化されます!
誰でも私を助けてもらえますか?