-2

I'm developing simple Map application. I used action bar. I have added Map button on action bar. When users click on Map button it will take to Next activity(Map Activity). There will showing Map Activity from sqlite db. i'm getting Null pointer exception error when i click Map Button. but when i used Next activity(Map Activity) as a Main Activity. it works well.

Do you think why i'm getting error on Map Button? Do i need to do something to work when i click map button on action bar to go Next Activity(Map Activity) ?

Welcome all the feedback and advice :) Here is my code:

MainActivity.java

public class MainActivity extends Activity {



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ActionBar actionBar = getActionBar();
    actionBar.setIcon(R.drawable.logo);


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}



@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle presses on the action bar items
    switch (item.getItemId()) {
    case R.id.action_map:
        Intent i = new Intent(this, AllMap.class);
        startActivity(i);
        Toast.makeText(getApplicationContext(), "Map selected",
                Toast.LENGTH_SHORT).show();
        return true;
case R.id.action_search:
        // Toast.makeText(getApplicationContext(), "Search selected",
        // Toast.LENGTH_SHORT).show();
        return true;


default:
        return super.onOptionsItemSelected(item);
    }
  } 

}

MapActivity.Java

    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.Toast;

   import com.google.android.gms.maps.GoogleMap;
   import com.google.android.gms.maps.MapFragment;
   import com.google.android.gms.maps.model.LatLng;
   import com.google.android.gms.maps.model.Marker;
   import com.google.android.gms.maps.model.MarkerOptions;

   public class AllMap extends Activity {
    // Google Map
    private GoogleMap googleMap;
    private Marker marker;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    try {
        initilizeMap();
    } catch (Exception e) {
        e.printStackTrace();
    }
     LatLng ny= new LatLng(40.712784, -74.005941);
     marker = googleMap.addMarker(new MarkerOptions().position(sg).title("New York,NY"));

// Enable my location button
    googleMap.getUiSettings().setMyLocationButtonEnabled(true);

    // disable the zooming button
    googleMap.getUiSettings().setZoomControlsEnabled(false);

}

private void initilizeMap() {
    if (googleMap == null) {
        googleMap = ((MapFragment) getFragmentManager().findFragmentById(
                R.id.map1)).getMap();

        // check if map is created successfully or not
        if (googleMap == null) {
            Toast.makeText(getApplicationContext(),
                    "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                    .show();

        }
    }
}

@Override
protected void onResume() {
    super.onResume();
    initilizeMap();
}

}

activity_map.xml

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

 <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginTop="2dp"
    android:orientation="vertical" >

    <fragment
        android:id="@+id/map1"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
   </LinearLayout>

   </LinearLayout>
bee
  • 5
  • 3

1 Answers1

1

You need to specify your layout

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);
    ...

inside onCreate() method of your AllMap activity. In your initializeMap() method, fragment R.id.map1 cannot be found so you get a NullPointerException

yildirimyigit
  • 3,013
  • 4
  • 25
  • 35