Adding an action bar to a FragmentActivity

I am creating an application using Google maps for a specific reason. So I created the Google Maps application in Android Studio, and I have an activity that extends FragmentActivity. Everything works fine, but now I want to add an action bar at the top of the screen. The problem is that the card occupies the entire screen, and I do not know how to fix it.

Here is my activity code:

public class MainActivity extends FragmentActivity implements LocationListener { private GoogleMap mMap; // Might be null if Google Play services APK is not available. double lon = 0; double lat = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setUpMapIfNeeded(); } @Override protected void onResume() { super.onResume(); setUpMapIfNeeded(); } public void showSettingsAlert(){ AlertDialog.Builder alertDialog = new AlertDialog.Builder(this); // Setting Dialog Title alertDialog.setTitle("GPS settings"); // Setting Dialog Message alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?"); // On pressing Settings button alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int which) { Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(intent); } }); // on pressing cancel button alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); // Showing Alert Message alertDialog.show(); } private void setUpMapIfNeeded() { LocationManager manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); /*if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)){ showSettingsAlert(); } else{*/ // Getting Google Play availability status int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext()); // Showing status if(status!=ConnectionResult.SUCCESS){ // Google Play Services are not available int requestCode = 10; Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this, requestCode); dialog.show(); }else { // Google Play Services are available // Getting reference to the SupportMapFragment of activity_menu.xml SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); // Getting mMap object from the fragment mMap = fm.getMap(); // Enabling MyLocation Layer of Google Map mMap.setMyLocationEnabled(true); // Getting LocationManager object from System Service LOCATION_SERVICE LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); boolean networkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); if(networkEnabled){ Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if(location!=null){ lon = location.getLongitude(); lat = location.getLatitude(); LatLng latLng = new LatLng(lat, lon); // Showing the current location in Google Map mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); // Zoom in the Google Map mMap.animateCamera(CameraUpdateFactory.zoomTo(15)); } } // Creating a criteria object to retrieve provider Criteria criteria = new Criteria(); // Getting the name of the best provider String provider = locationManager.getBestProvider(criteria, true); // Getting Current Location Location location = locationManager.getLastKnownLocation(provider); if(location!=null){ onLocationChanged(location); } locationManager.requestLocationUpdates(provider, 20000, 0, this); /*}*/} } @Override public void onLocationChanged(Location location) { double latitude = location.getLatitude(); // Getting longitude of the current location double longitude = location.getLongitude(); // Creating a LatLng object for the current location LatLng latLng = new LatLng(latitude, longitude); // Showing the current location in Google Map mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); // Zoom in the Google Map mMap.animateCamera(CameraUpdateFactory.zoomTo(15)); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_menu, menu); super.onCreateOptionsMenu(menu); return true; } 

This is my layout for activity (maybe a problem?):

 <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/map" tools:context=".MainActivity" android:name="com.google.android.gms.maps.SupportMapFragment"/> 
+6
source share
3 answers

Make the AppCompatActivity extension instead of MainActivity .

It used to be that ActionBarActivity should be expanded, but now it's deprecated.

+19
source

I know this was answered, but since its publication, ActionBarActivity deprecated.

Instead

Expand MainActivity with AppCompatActivity

+6
source

Set up AppCompatActivity in fact, and then use the onCreateOptionsMenu () method to customize the action bar.

+4
source

Source: https://habr.com/ru/post/983185/


All Articles