mapview
というフラグメントがあります。フラグメントが作成されても再開時にメニューが作成されない
フラグメントからメニューレイアウトを膨らませて、メニューバーがフラグメントから膨らんでしまうように、コードにsetHasOptionsMenu(true)
を追加しました。
しかし興味深いのは、フラグメントが初めて読み込まれたときに表示されないということです。しかし、他のフラグメントに切り替えてこのフラグメントに戻った場合、メニューバーが再び表示されます。私はなぜそれが最初に現れないのか分かりません。
何を行う必要がありますか?助けてもらえますか?
以下は、フラグメントレイアウトの内容です。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.google.android.gms.maps.MapView android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
これはJavaクラスです。
public class SearchFragment extends Fragment implements GoogleMap.InfoWindowAdapter,
GoogleMap.OnInfoWindowClickListener, LocationListener, OnMapReadyCallback {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.i(TAG, "onCreateView()");
rootView = inflater.inflate(R.layout.fragment_search, container, false);
setHasOptionsMenu(true);
MapsInitializer.initialize(this.getActivity());
mMapView = (MapView) rootView.findViewById(R.id.map);
mMapView.onCreate(savedInstanceState);
mMapView.getMapAsync(this);
this.markers = new HashMap<>();
this.activity = (MainActivity) this.getActivity();
return rootView;
}
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Inflate the menu; this adds items to the action bar if it is present.
Log.i(TAG, "onCreateOptionsMenu()");
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
this.activity.getMenuInflater().inflate(R.menu.menu_search, menu);
}
@Override
public void onMapReady(GoogleMap map) {
Log.i(TAG, "onMapReady");
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
try {
if (checkScanPermissions()) {
map.setMyLocationEnabled(true);
map.animateCamera(CameraUpdateFactory.newLatLngZoom(getLocation(), 18));
}
} catch (SecurityException e) {
Log.e(TAG, "Permission to location not granted");
}
map.setBuildingsEnabled(true);
map.getUiSettings().setZoomControlsEnabled(true);
map.setInfoWindowAdapter(this);
map.setOnInfoWindowClickListener(this);
this.mMap = map;
setUpMap(false);
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public View getInfoContents(Marker marker) {
return null;
}
@Override
public void onLocationChanged(Location location) {
Log.i(TAG, "onLocationChanged");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "onCreate()");
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onSaveInstanceState(Bundle outState) {
Log.i(TAG, "onSaveInstanceState()");
super.onSaveInstanceState(outState);
}
@Override
public void onLowMemory() {
Log.i(TAG, "onLowMemory()");
super.onLowMemory();
mMapView.onLowMemory();
}
@Override
public void onResume() {
Log.i(TAG, "onResume()");
super.onResume();
setHasOptionsMenu(true);
mMapView.onResume();
}
}
私は機能に与えている印刷も来ない 'Log.i(TAG、 "onCreateOptionsMenuを()");'初めてロードするとき。しかし、私が他の部分から断片を再開するときに来るでしょう。 –