title: Fragment Error in Google Maps V2
body: <p>I am trying to create a tourism app that involves a tab layout and a map. I got my <a href="http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/" rel="nofollow">tab layout using fragments and viewpager</a> from androidhive and <a href="http://wptrafficanalyzer.in/blog/driving-distance-and-travel-time-duration-between-two-locations-in-google-map-android-api-v2/" rel="nofollow">google map</a> from wptrafficanalyzer. However I am experiencing a lot of errors, and I don't know how to deal with them since this is my first time dealing with fragments. I created my own version of the google maps from android hive, however, I can't integrate it in one of the tabs in my tab layout. Can anyone please help? I'll post the code If you need it. Thanks!</p>
  
  <p><strong>Here is my MainActivity.java (Google Map).</strong></p>
  
  <pre><code>public class MainActivity extends FragmentActivity {
  
  final Context context = this;
  Button routes;
  double latitude = 14.635576;
  double longitude = 121.033115;
  LatLng latlng = new LatLng(14.6353475, 121.0327501);
  LatLngBounds QC = new LatLngBounds(
            new LatLng(14.656669, 120.998598), new LatLng(14.666965, 121.098934));
  MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("Shell").snippet("Sa tabi ng Estuar Building");
  Marker mark;
  GoogleMap map;
  ArrayList&lt;LatLng&gt; markerPoints;
  TextView tvDistanceDuration;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
  
     routes = (Button) findViewById (R.id.buttonRoutes);
     routes.setBackgroundResource(R.drawable.drivinghires);
  
     tvDistanceDuration = (TextView) findViewById(R.id.tv_distance_time);
  
  
     routes.setOnClickListener(new OnClickListener() {
  
        @Override
        public void onClick(View arg0) {
  
          // custom dialog
          final Dialog dialog = new Dialog(context);
          dialog.setContentView(R.layout.options);
          dialog.setTitle("Title...");
  
          // set the custom dialog components - text, image and button
          ImageView image = (ImageView) dialog.findViewById(R.id.image);
          image.setImageResource(R.drawable.jeep);
          ImageView image1 = (ImageView) dialog.findViewById(R.id.image1);
          image1.setImageResource(R.drawable.drivinghires);
  
  
          Button dialogButton = (Button) dialog.findViewById(R.id.buttonOk);
          // if button is clicked, close the custom dialog
          dialogButton.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
                  dialog.dismiss();
              }
          });
  
          dialog.show();
        }
      });
  
  
     // Initializing
     markerPoints = new ArrayList&lt;LatLng&gt;();
  
     // Getting reference to SupportMapFragment of the activity_main
     SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
  
     // Getting Map for the SupportMapFragment
     map = fm.getMap();
  
  
  
     // Set Compass Enabled
  
     map.getUiSettings().setCompassEnabled(true);
     map.getUiSettings().setRotateGesturesEnabled(true);
  
     // create marker
  
  
     // Changing marker icon
     marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.gasten));
     map.moveCamera(CameraUpdateFactory.newLatLngZoom(QC.getCenter(), 12));
  
     // Enable MyLocation Button in the Map
     map.setMyLocationEnabled(true);
  
     mark = map.addMarker(marker);
  
     //button
  
  
  
  
  
  
    map.setOnCameraChangeListener(new OnCameraChangeListener() {
  
          @Override
          public void onCameraChange(CameraPosition arg0) {
  
              // adding marker
  
              if(arg0.zoom &lt;16){
                 mark.setVisible(false);}
              else
                  mark.setVisible(true);
  
              if(arg0.zoom &gt; 17){
                  mark.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.gasten));
              }
  
  
  
  
          }
      });
  
     // Setting onclick event listener for the map
     map.setOnMapClickListener(new OnMapClickListener() {
  
         @Override
         public void onMapClick(LatLng point) {
  
             // Already two locations
             if(markerPoints.size()&gt;1){
                 markerPoints.clear();
                 map.clear();
  
                 MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("Shell").snippet("Sa tabi ng Estuar Building");
  
                 // Changing marker icon
                 marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.gasstation));
  
                 // adding marker
                map.addMarker(marker);
             }
  
             // Adding new item to the ArrayList
             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(markerPoints.size()==1){
                 options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
             }else if(markerPoints.size()==2){
                 options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
             }
  
             // Add new marker to the Google Map Android API V2
             map.addMarker(options);
  
             // Checks, whether start and end locations are captured
             if(markerPoints.size() &gt;= 2){
                 LatLng origin = markerPoints.get(0);
                 LatLng dest = markerPoints.get(1);
  
                 // Getting URL to the Google Directions API
                 String url = 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;
  }
  
  // Fetches data from url passed
  private class DownloadTask extends AsyncTask&lt;String, Void, String&gt;{
  
     // Downloading data in non-ui thread
     @Override
     protected String doInBackground(String... url) {
  
         // For storing data from web service
         String data = "";
  
         try{
             // Fetching the data from web service
             data = downloadUrl(url[0]);
         }catch(Exception e){
             Log.d("Background Task",e.toString());
         }
         return data;
     }
  
     // Executes in UI thread, after the execution of
     // doInBackground()
     @Override
     protected void onPostExecute(String result) {
         super.onPostExecute(result);
  
         ParserTask parserTask = new ParserTask();
  
         // Invokes the thread for parsing the JSON data
         parserTask.execute(result);
     }
  }
  
  /** A class to parse the Google Places in JSON format */
  private class ParserTask extends AsyncTask&lt;String, Integer,    List&lt;List&lt;HashMap&lt;String,String&gt;&gt;&gt; &gt;{
  
     // Parsing the data in non-ui thread
     @Override
     protected List&lt;List&lt;HashMap&lt;String, String&gt;&gt;&gt; doInBackground(String... jsonData) {
  
         JSONObject jObject;
         List&lt;List&lt;HashMap&lt;String, String&gt;&gt;&gt; routes = null;
  
         try{
             jObject = new JSONObject(jsonData[0]);
             DirectionsJSONParser parser = new DirectionsJSONParser();
  
             // Starts parsing data
             routes = parser.parse(jObject);
         }catch(Exception e){
             e.printStackTrace();
         }
         return routes;
     }
  
     // Executes in UI thread, after the parsing process
     @Override
     protected void onPostExecute(List&lt;List&lt;HashMap&lt;String, String&gt;&gt;&gt; result) {
         ArrayList&lt;LatLng&gt; points = null;
         PolylineOptions lineOptions = null;
         MarkerOptions markerOptions = new MarkerOptions();
         String distance = "";
         String duration = "";
  
         if(result.size()&lt;1){
             Toast.makeText(getBaseContext(), "No Points", Toast.LENGTH_SHORT).show();
             return;
         }
  
         // Traversing through all the routes
         for(int i=0;i&lt;result.size();i++){
             points = new ArrayList&lt;LatLng&gt;();
             lineOptions = new PolylineOptions();
  
             // Fetching i-th route
             List&lt;HashMap&lt;String, String&gt;&gt; path = result.get(i);
  
             // Fetching all the points in i-th route
             for(int j=0;j&lt;path.size();j++){
                 HashMap&lt;String,String&gt; point = path.get(j);
  
                 if(j==0){    // Get distance from the list
                     distance = (String)point.get("distance");
                     continue;
                 }else if(j==1){ // Get duration from the list
                     duration = (String)point.get("duration");
                     continue;
                 }
  
                 double lat = Double.parseDouble(point.get("lat"));
                 double lng = Double.parseDouble(point.get("lng"));
                 LatLng position = new LatLng(lat, lng);
  
                 points.add(position);
             }
  
             // Adding all the points in the route to LineOptions
             lineOptions.addAll(points);
             lineOptions.width(2);
             lineOptions.color(Color.RED);
         }
  
         tvDistanceDuration.setText("Distance:"+distance + ", Duration:"+duration);
  
         // Drawing polyline in the Google Map for the i-th route
         map.addPolyline(lineOptions);
     }
  }
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
  }
  
  }
  </code></pre>
  
  <p><strong>I try to put it in my TabTwo.java</strong></p>
  
  <pre><code> public class TabTwo extends Fragment {
  
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
          Bundle savedInstanceState) {
  
      View rootView = inflater.inflate(R.layout.activity_tab_two, container, false);
  
      return rootView;
  }  
  
  }
  </code></pre>
  
  <p>When I try to copy my MainActivity.java on my TabTwo, lot of errors appear (create method for setcontentview, create method findViewById etc..)</p>