0

Я использую 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.

ответ

0

вы могли бы попытаться сохранить ваше меню в menu папку и может раздуть это меню, как этот

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.main, menu); 
     super.onCreateOptionsMenu(menu, inflater); 
    } 
+0

Я не могу пользователь супер. в моем фрагменте, возможно, именно поэтому мое текущее меню не появляется, потому что я использую 'return onCreateOptionsMenu (меню);' вместо 'return super.onCreateOptionsMenu (меню); ' как мне сделать супер. метод работы во фрагменте? – user3135324

+0

@ user3135324 Этот метод я взял из одного из фрагментов моего проекта, и он работает хорошо. –

+0

Если я использую super, я получаю ошибку 'Метод onCreateOptionsMenu (Menu, MenuInflater) в типе SherlockFragment не применим для аргументов (Menu)' – user3135324

Смежные вопросы