As per mentioned by some other devs, google maps take some while to load. That is why you need to call your map initialization code after some delay (lets say 500ms).
For example:
setContentView(R.layout.activty_map);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
SupportMapFragment mapFrag = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map); //should'nt be null after 500ms
map = mapFrag.getMap();
}
}, 500);
Moreover, I would suggest you to rely on onResume
method for confirm completion of loading.