Я использую ActionBarSherlock для отображения фрагментированных вкладок на Android 2.2 Проблема, с которой я сталкиваюсь, заключается в том, что я не могу отображать собственные параметры OptionsMenu на фрагменте Google Maps. Я установил setHasOptionsMenu (true); в методе onCreate, но он по-прежнему не появляется.Меню ActionBarSherlock Options не отображается в фрагменте Google Maps
Это мой Google Maps fragment3.java
public class Fragment3 extends SherlockFragment {
private MapView mMapView;
private int group1Id = 1;
int homeId = Menu.FIRST;
int profileId = Menu.FIRST +1;
int searchId = Menu.FIRST +2;
int dealsId = Menu.FIRST +3;
int helpId = Menu.FIRST +4;
int contactusId = Menu.FIRST +5;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment3, container, false);
mMapView = (MapView) view.findViewById(R.id.mapview);
// inflat and return the layout
mMapView.onCreate(savedInstanceState);
mMapView.onResume();// needed to get the map to display immediately
try {
MapsInitializer.initialize(getActivity());
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
GoogleMap googleMap = mMapView.getMap();
googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(54.902815,23.9500459) , 16.0f));
// googleMap.setMyLocationEnabled(true);
googleMap.getUiSettings().setZoomControlsEnabled(true);
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
setHasOptionsMenu(true);
}
/*
* Using a mapview in a fragment requires you to 'route'
* the lifecycle events of the fragment to the mapview
*/
@Override
public void onResume() {
super.onResume();
if (null != mMapView)
mMapView.onResume();
}
@Override
public void onPause() {
super.onPause();
if (null != mMapView)
mMapView.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
if (null != mMapView)
mMapView.onDestroy();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (null != mMapView)
mMapView.onSaveInstanceState(outState);
}
@Override
public void onLowMemory() {
super.onLowMemory();
if (null != mMapView)
mMapView.onLowMemory();
}
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(group1Id, homeId, homeId, "").setIcon(R.drawable.action_about);
menu.add(group1Id, profileId, profileId, "").setIcon(R.drawable.action_about);
menu.add(group1Id, searchId, searchId, "").setIcon(R.drawable.action_about);
menu.add(group1Id, dealsId, dealsId, "").setIcon(R.drawable.action_about);
menu.add(group1Id, helpId, helpId, "").setIcon(R.drawable.action_about);
menu.add(group1Id, contactusId, contactusId, "").setIcon(R.drawable.action_about);
return onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 1:
........
case 6:
//code here
default:
break;
}
return super.onOptionsItemSelected(item);
}
}
это не появляется, потому что это во фрагменте? Есть ли способ включить собственное пользовательское меню внутри фрагмента карты google? Все ответы и обсуждения приветствуются, дайте мне знать, если вам нужно просмотреть любой из моих классов адаптеров, которые обрабатывают фрагменты, или файлы .xml.
Я не могу пользователь супер. в моем фрагменте, возможно, именно поэтому мое текущее меню не появляется, потому что я использую 'return onCreateOptionsMenu (меню);' вместо 'return super.onCreateOptionsMenu (меню); ' как мне сделать супер. метод работы во фрагменте? – user3135324
@ user3135324 Этот метод я взял из одного из фрагментов моего проекта, и он работает хорошо. –
Если я использую super, я получаю ошибку 'Метод onCreateOptionsMenu (Menu, MenuInflater) в типе SherlockFragment не применим для аргументов (Menu)' – user3135324