title: How to resolve 'Null Pointer Exception'
body: <p>I'm new to Android. I'm creating an application in which I have to use a map in my two activities. My application is running good but when I tap on my 'TagYourself' activity (one of the map activities) my application crashes. Log cat shows the null pointer exception on <strong>line 46</strong> which is <code>this.setContentView(R.layout.activity_tag_yourself);</code>. Log cat is also showing.
  <code>android.view.InflateException</code> on Binary XML file line # 17 which is the fragment for map. </p>
  
  <p>I couldn't understand why it is giving such exceptions. Please help me. 
  Here is my log cat for the acitivity.</p>
  
  <pre><code>04-06 23:20:02.851: I/InputMethodManager(31122): handleMessage: MSG_SET_ACTIVE false, was true
  04-06 23:20:02.867: I/InputMethodManager(31122): handleMessage: MSG_UNBIND 985
  04-06 23:20:02.911: D/OpenGLRenderer(31122): Flushing caches (mode 0)
  04-06 23:20:03.276: D/OpenGLRenderer(31122): Flushing caches (mode 0)
  04-06 23:20:08.341: V/PhoneWindow(31122): DecorView setVisiblity: visibility = 0
  04-06 23:20:08.386: V/InputMethodManager(31122): onWindowFocus: null softInputMode=32 first=true flags=#1810100
  04-06 23:20:08.386: V/InputMethodManager(31122): START INPUT: com.android.internal.policy.impl.PhoneWindow$DecorView{41394140 V.E..... R.....ID 0,0-480,854} ic=null tba=android.view.inputmethod.EditorInfo@412aebc0 controlFlags=#104
  04-06 23:20:08.390: V/InputMethodManager(31122): Starting input: Bind result=InputBindResult{com.android.internal.view.IInputMethodSession$Stub$Proxy@412635d8 com.android.inputmethod.latin/.LatinIME #989}
  04-06 23:20:08.420: I/InputMethodManager(31122): handleMessage: MSG_SET_ACTIVE true, was false
  04-06 23:20:08.427: I/SurfaceTextureClient(31122): [STC::queueBuffer] (this:0x52cb22e8) fps:0.15, dur:6849.47, max:6849.47, min:6849.47
  04-06 23:20:08.427: I/SurfaceTextureClient(31122): [STC::queueBuffer] this:0x52cb22e8, api:1, last queue time elapsed:6849.47
  04-06 23:20:09.363: V/Provider/Settings(31122): invalidate [system]: current 182 != cached 0
  04-06 23:20:09.367: D/ActivityThread(31122): installProvider: context=android.app.ContextImpl@41393588holder=android.app.IActivityManager$ContentProviderHolder@41271e08noisy=truenoReleaseNeeded=truestable=true
  04-06 23:20:09.368: V/Provider/Settings(31122): from db cache, name = sound_effects_enabled , value = 0
  04-06 23:20:09.393: D/mylog(31122): Wifi State true
  04-06 23:20:09.514: I/SurfaceTextureClient(31122): [STC::queueBuffer] (this:0x52cb22e8) fps:1.84, dur:1087.15, max:843.11, min:244.04
  04-06 23:20:09.562: D/AndroidRuntime(31122): Shutting down VM
  04-06 23:20:09.562: W/dalvikvm(31122): threadid=1: thread exiting with uncaught exception (group=0x40cab9a8)
  04-06 23:20:09.584: E/AndroidRuntime(31122): FATAL EXCEPTION: main
  04-06 23:20:09.584: E/AndroidRuntime(31122): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jamaat_times/com.example.jamaattiming.TagYourself}: android.view.InflateException: Binary XML file line #17: Error inflating class fragment
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.app.ActivityThread.access$600(ActivityThread.java:162)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.os.Handler.dispatchMessage(Handler.java:107)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.os.Looper.loop(Looper.java:194)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.app.ActivityThread.main(ActivityThread.java:5371)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at java.lang.reflect.Method.invokeNative(Native Method)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at java.lang.reflect.Method.invoke(Method.java:525)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at dalvik.system.NativeStart.main(Native Method)
  04-06 23:20:09.584: E/AndroidRuntime(31122): Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class fragment
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:281)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.app.Activity.setContentView(Activity.java:1881)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at com.example.jamaattiming.TagYourself.onCreate(TagYourself.java:46)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.app.Activity.performCreate(Activity.java:5122)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    ... 11 more
  04-06 23:20:09.584: E/AndroidRuntime(31122): Caused by: java.lang.NullPointerException: name == null
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at java.lang.VMClassLoader.findLoadedClass(Native Method)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:354)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at java.lang.ClassLoader.loadClass(ClassLoader.java:491)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.support.v4.app.Fragment.isSupportFragmentClass(Fragment.java:436)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:255)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
  04-06 23:20:09.584: E/AndroidRuntime(31122):    ... 21 more
  </code></pre>
  
  <p>here is xml code:</p>
  
  <pre><code>&lt;RelativeLayout 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:orientation="vertical" 
      android:background="#808080"
      tools:context=".TagYourself" 
      android:id="@+id/activity_tag_yourself"&gt;
  
  &lt;TextView
      android:id="@+id/tv_distance_time"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:text="@string/hello_world" /&gt;
  
  &lt;fragment
      android:id="@+id/map"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@id/tv_distance_time" /&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>here is Java Code for TagYourself Class:</p>
  
  <pre><code>    public class TagYourself extends FragmentActivity
  {
      GoogleMap map;
      ArrayList&lt;LatLng&gt; markerPoints;
      TextView tvDistanceDuration;
  
      @Override
      protected void onCreate(Bundle savedInstanceState)
      {
          super.onCreate(savedInstanceState);
          this.setContentView(R.layout.activity_tag_yourself);
  
          this.tvDistanceDuration = (TextView) this.findViewById(R.id.tv_distance_time);
          // Initializing
          this.markerPoints = new ArrayList&lt;LatLng&gt;();
  
  
          SupportMapFragment fm = (SupportMapFragment) this.getSupportFragmentManager().findFragmentById(R.id.map);
  
          // Getting Map for the SupportMapFragment
          this.map = fm.getMap();
  
          // Enable MyLocation Button in the Map
          this.map.setMyLocationEnabled(true);
  
          // Setting onclick event listener for the map
          this.map.setOnMapClickListener(new OnMapClickListener()
          {
              @Override
              public void onMapClick(LatLng point)
              {
                  // Already two locations
                  if (TagYourself.this.markerPoints.size() &gt; 1)
                  {
                      TagYourself.this.markerPoints.clear();
                      TagYourself.this.map.clear();
                  }
  
                  // Adding new item to the ArrayList
                  TagYourself.this.markerPoints.add(point);
  
                  // Creating MarkerOptions
                  MarkerOptions options = new MarkerOptions();
  
                  // Setting the position of the marker
                  options.position(point);
  
                  /**
                   * For the start location, the color of marker is GREEN and
                   * for the end location, the color of marker is RED.
                   */
                  if (TagYourself.this.markerPoints.size() == 1)
                  {
                      options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
                  } else if (TagYourself.this.markerPoints.size() == 2)
                  {
                      options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
                  }
  
                  // Add new marker to the Google Map Android API V2
                  TagYourself.this.map.addMarker(options);
  
                  // Checks, whether start and end locations are captured
                  if (TagYourself.this.markerPoints.size() &gt;= 2)
                  {
                      LatLng origin = TagYourself.this.markerPoints.get(0);
                      LatLng dest = TagYourself.this.markerPoints.get(1);
  
                      // Getting URL to the Google Directions API
                      String url = TagYourself.this.getDirectionsUrl(origin, dest);
  
                      DownloadTask downloadTask = new DownloadTask();
  
                      // Start downloading json data from Google Directions API
                      downloadTask.execute(url);
                  }
              }
          });
      }
  
      private String getDirectionsUrl(LatLng origin, LatLng dest)
      {
          // Origin of route
          String str_origin = "origin=" + origin.latitude + "," + origin.longitude;
  
          // Destination of route
          String str_dest = "destination=" + dest.latitude + "," + dest.longitude;
  
          // Sensor enabled
          String sensor = "sensor=false";
  
          // Building the parameters to the web service
          String parameters = str_origin + "&amp;" + str_dest + "&amp;" + sensor;
  
          // Output format
          String output = "json";
  
          // Building the url to the web service
          String url = "https://maps.googleapis.com/maps/api/directions/" + output + "?" + parameters;
  
          return url;
      }
  
      /** A method to download json data from url */
      private String downloadUrl(String strUrl) throws IOException
      {
          String data = "";
          InputStream iStream = null;
          HttpURLConnection urlConnection = null;
          try
          {
              URL url = new URL(strUrl);
  
              // Creating an http connection to communicate with url
              urlConnection = (HttpURLConnection) url.openConnection();
  
              // Connecting to url
              urlConnection.connect();
  
              // Reading data from url
              iStream = urlConnection.getInputStream();
  
              BufferedReader br = new BufferedReader(new InputStreamReader(iStream));
  
              StringBuffer sb = new StringBuffer();
  
              String line = "";
              while ((line = br.readLine()) != null)
              {
                  sb.append(line);
              }
  
              data = sb.toString();
  
              br.close();
  
          } catch (Exception e)
          {
              Log.d("Exception while downloading url", e.toString());
          } finally
          {
              iStream.close();
              urlConnection.disconnect();
          }
          return data;
      }
  </code></pre>
  
  <p>I've uses the following permissions:</p>
  
  <pre><code> &lt;uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="16" /&gt;
  
  &lt;uses-permission android:name="com.example.jamaat_times.permission.MAPS_RECEIVE" /&gt;
  
  &lt;uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt;
  &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
  &lt;uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&gt;
  &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt;
  &lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/&gt;
  </code></pre>
  
  <p>P.S: There is no problem in my key.</p>