Samir Mangroliya
Samir Mangroliya

Reputation: 40416

Android Google Map api v2 returns null?

I have below code and its working nice tvTitle is not returning null but

RelativeLayout relmain = (RelativeLayout) findViewById(R.id.mainview);
LayoutInflater inflater = LayoutInflater.from(this);

RelativeLayout contents = (RelativeLayout) inflater
            .inflate(R.layout.placedetail, null);
relmain.addView(contents);

TextView tvTitle = (TextView) contents.findViewById(R.id.tvdealtitle);
                               ^^^^^^  

but google map is return me null...check below code...

GoogleMap googleMap = ((SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map2)).getMap();


System.out.println("Google map is :: " + googleMap);

placedetail.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bgmap"
android:orientation="vertical" >

<RelativeLayout
    android:id="@+id/rel1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/banner"
    android:onClick="onClickBack" >

    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="5dp"
        android:background="@drawable/directions"
        android:onClick="onClickImage" />
</RelativeLayout>

<RelativeLayout
    android:id="@+id/reldetail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/rel1"
    android:layout_marginTop="10dp" >

    <TextView
        android:id="@+id/tvdealtitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="8dp"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="Title"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tvdealoffertext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tvdealtitle"
        android:layout_below="@+id/tvdealtitle"
        android:layout_marginTop="2dp"
        android:ellipsize="end"
        android:maxLines="2"
        android:text="offertext"
        android:textColor="#696969"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tvdealdesc"
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_alignLeft="@+id/tvdealtitle"
        android:layout_below="@+id/tvdealoffertext"
        android:layout_marginTop="2dp"
        android:scrollbars="vertical"
        android:text="desc"
        android:textColor="#696969"
        android:textStyle="bold" />
</RelativeLayout>

<fragment
    android:id="@+id/map2"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/reldetail" /> 

</RelativeLayout>

Upvotes: 2

Views: 2677

Answers (1)

Nahuel Barrios
Nahuel Barrios

Reputation: 1910

Taken from SupportMapFragment documentation:

A GoogleMap can only be acquired using getMap() when the underlying maps system is loaded and the underlying view in the fragment exists. This class automatically initializes the maps system and the view; however you cannot be guaranteed when it will be ready because this depends on the availability of the Google Play services APK. If a GoogleMap is not available, getMap() will return null.

Then, in your Activity you can use GooglePlayServicesUtil to check about the availability:

// Try to obtain the map from the SupportMapFragment.
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

// Check if we were successful in obtaining the map.
if (mMap != null) {
    // Setup your map...
} else {
    int isEnabled = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    if (isEnabled != ConnectionResult.SUCCESS) {
        GooglePlayServicesUtil.getErrorDialog(isEnabled, this, 0);
    }
}

Here in method setUpMapIfNeeded you've got a working example of one of my apps: Tureame.

Upvotes: 4

Related Questions