Using ActionBarSherlock With the New SupportMapFragment

前端 未结 6 496
闹比i
闹比i 2020-11-28 03:30

I am looking at using ActionbarSherlock but have one query that\'s holding me back.

So my application needs to be fully backwards compatible to API Level 7.

6条回答
  •  野性不改
    2020-11-28 03:58

    I tried implementing SupportMapFragment with ActionBarSherlock.

    It is working very fine.

    enter image description here

    Below is code snippet.

    package com.example.newmapview;
    
    import android.os.Bundle;
    import android.widget.Toast;
    import com.actionbarsherlock.app.SherlockFragmentActivity;
    import com.actionbarsherlock.view.Menu;
    import com.actionbarsherlock.view.MenuItem;
    import com.actionbarsherlock.view.SubMenu;
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.SupportMapFragment;
    
    public class MainActivity extends SherlockFragmentActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            SupportMapFragment fragment = SupportMapFragment.newInstance();
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.mapLayout, fragment).commit();
    
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
    
            SubMenu subMenu = menu.addSubMenu("Type");
    
            subMenu.add("Normal");
            subMenu.add("SATELLITE");
    
            subMenu.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
    
            if (item.getTitle().toString().equalsIgnoreCase("Normal")) {
                Toast.makeText(this, "Clicked Normal", Toast.LENGTH_LONG).show();
                GoogleMap googleMap = ((SupportMapFragment) getSupportFragmentManager()
                        .findFragmentById(R.id.mapLayout)).getMap();
    
                if (googleMap != null)
                    googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
                else
                    Toast.makeText(this, "GoogleMap is null", Toast.LENGTH_LONG)
                            .show();
            } else if (item.getTitle().toString().equalsIgnoreCase("SATELLITE")) {
                Toast.makeText(this, "Clicked SATELLITE", Toast.LENGTH_LONG).show();
                GoogleMap googleMap = ((SupportMapFragment) getSupportFragmentManager()
                        .findFragmentById(R.id.mapLayout)).getMap();
    
                if (googleMap != null)
                    googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
                else
                    Toast.makeText(this, "GoogleMap is null", Toast.LENGTH_LONG)
                            .show();
            }
    
            return true;
    
        }
    }
    

    Hope this will help.

提交回复
热议问题