android - getFragmentManager returning null pointer exception -


my getfragmentmanager in function setupmapifneeded() returning null pointer exception. put fragment separately activity_main.xml, here code :

activity_main.xml :

<framelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.yai.testmap.mainactivity" tools:ignore="mergerootframe" />  

updated

fragment_main.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">  <!--  mapview-->  <com.google.android.gms.maps.mapview     android:layout_width="match_parent"     android:layout_height="match_parent"     android:id="@+id/map"  /> 

and here *.java file :

updated

 package com.yai.testmap;  import android.support.v7.app.actionbaractivity; import android.support.v4.app.fragment; import android.os.bundle; import android.view.layoutinflater; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.viewgroup;  /* error repport */ import android.util.log;  /* import dropdownlist used project */ import android.widget.checkbox; import android.widget.spinner; import android.widget.toast; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.adapterview.onitemselectedlistener;  import com.google.android.gms.common.connectionresult; import com.google.android.gms.common.googleplayservicesnotavailableexception; import com.google.android.gms.common.googleplayservicesutil; /* import google map */ import com.google.android.gms.maps.googlemap; import com.google.android.gms.maps.mapfragment; import com.google.android.gms.maps.mapsinitializer; import com.google.android.gms.maps.supportmapfragment; import com.google.android.gms.maps.mapview;  /* google map type */ import static com.google.android.gms.maps.googlemap.map_type_hybrid; import static com.google.android.gms.maps.googlemap.map_type_none; import static com.google.android.gms.maps.googlemap.map_type_normal; import static com.google.android.gms.maps.googlemap.map_type_satellite; import static com.google.android.gms.maps.googlemap.map_type_terrain;  public class mainactivity extends actionbaractivity implements onitemselectedlistener {     private static mapview mmapview;     private static mapfragment mmapfragment;     private static googlemap mgooglemap;     private static checkbox mtrafficcheckbox, mlocationcheckbox, mbuildingcheckbox, mindoorcheckbox;      public static class placeholderfragment extends fragment {          public placeholderfragment() {         }          @override         public view oncreateview(layoutinflater inflater, viewgroup container,                 bundle savedinstancestate) {             view rootview = inflater.inflate(r.layout.fragment_main, container,                     false);              spinner spinner = (spinner) rootview.findviewbyid(r.id.spinneroption);             arrayadapter adapter = arrayadapter.createfromresource(getactivity(), r.array.spinner_option_string, android.r.layout.simple_spinner_item);             adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item);             spinner.setadapter(adapter);             spinner.setonitemselectedlistener((onitemselectedlistener) getactivity());              mtrafficcheckbox = (checkbox) rootview.findviewbyid(r.id.checkbox_traffic);             mlocationcheckbox = (checkbox) rootview.findviewbyid(r.id.checkbox_location);             mbuildingcheckbox = (checkbox) rootview.findviewbyid(r.id.checkbox_building);             mindoorcheckbox = (checkbox) rootview.findviewbyid(r.id.checkbox_indoor);               mapsinitializer.initialize(getactivity());              switch (googleplayservicesutil.isgoogleplayservicesavailable(getactivity()) )             {             case connectionresult.success :                 mmapview = (mapview) rootview.findviewbyid(r.id.map);                    mmapview.oncreate(savedinstancestate);                  if(mmapview != null){                     mgooglemap = mmapview.getmap();                     mgooglemap.getuisettings().setmylocationbuttonenabled(false);                     mgooglemap.setmylocationenabled(true);                 }             }                 return rootview;         }     }      @override     protected void oncreate(bundle savedinstancestate) {             super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          if (savedinstancestate == null) {             getsupportfragmentmanager().begintransaction()                     .add(r.id.container, new placeholderfragment()).commit();         }                 setupmapifneeded();              }         private void setupmapifneeded(){         if(mgooglemap == null){                  //mmapfragment = (mapfragment) getfragmentmanager().findfragmentbyid(r.id.map);             mgooglemap = mmapview.getmap();         }     }      private boolean checkready(){         if(mgooglemap == null){             toast.maketext(this, r.string.map_not_ready, toast.length_short).show();             return false;         }         return true;     }      private void updatetraffic(){         if(!checkready()){             return;         }         mgooglemap.settrafficenabled(mtrafficcheckbox.ischecked());     }      public void ontraffictoggled(view view){         updatetraffic();     }      private void updatelocation(){         if(!checkready()){             return;         }         mgooglemap.setmylocationenabled(mlocationcheckbox.ischecked());     }      public void onlocationtoggled(view view){         updatelocation();     }      private void updatebuilding(){         if(!checkready()){             return;         }         mgooglemap.setbuildingsenabled(mbuildingcheckbox.ischecked());     }      public void onbuildingtoggled(view view){         updatebuilding();     }      private void updateindoor(){         if(!checkready()){             return;         }         mgooglemap.setindoorenabled(mindoorcheckbox.ischecked());     }      public void onindoortoggled(view view){         updateindoor();     }      @override     public void onitemselected(adapterview parent, view view, int position, long id){          setlayer((string) parent.getitematposition(position));     }      private void setlayer(string layername){         if(!checkready()){             return;         }          if(layername.equals(getstring(r.string.normal))){             mgooglemap.setmaptype(map_type_normal);         }         else if(layername.equals(getstring(r.string.hybrid))){             mgooglemap.setmaptype(map_type_hybrid);         }         else if(layername.equals(getstring(r.string.satellite))){             mgooglemap.setmaptype(map_type_satellite);         }         else if(layername.equals(getstring(r.string.terrain))){             mgooglemap.setmaptype(map_type_terrain);         }         else if(layername.equals(getstring(r.string.none_map))){             mgooglemap.setmaptype(map_type_none);         }         else{             log.i("lda", "error setting layer name " + layername);         }     }      @override     public void onnothingselected(adapterview parent){      }      @override     protected void onresume() {         super.onresume();         setupmapifneeded();         if (mgooglemap != null) {             updatetraffic();             updatelocation();             updatebuilding();             updateindoor();         }     }         @override     public boolean oncreateoptionsmenu(menu menu) {          // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.main, menu);         return true;     }      @override     public boolean onoptionsitemselected(menuitem item) {         // handle action bar item clicks here. action bar         // automatically handle clicks on home/up button, long         // specify parent activity in androidmanifest.xml.         int id = item.getitemid();         if (id == r.id.action_settings) {             return true;         }         return super.onoptionsitemselected(item);     } } 

i've tried use getsupportframentmanager android.support.v4.app.dialogfragment support library :

mgooglemap = ((mapfragment) getsupportfragmentmanager().findfragmentbyid(r.id.map)).getmap(); 

but still doesn't works. got error eclipse cannot cast fragment mapfragment. i've tried extend fragmentactivity , still returning null pointer. when i'm tried comment getsupportfragmentmanager in function setupmapifneeded(), error gone.

here logcat :

updated

 03-24 20:43:36.124: e/androidruntime(27152): java.lang.runtimeexception: unable start activity componentinfo{com.yai.testmap/com.yai.testmap.mainactivity}: java.lang.nullpointerexception 03-24 20:43:36.124: e/androidruntime(27152):    @ com.yai.testmap.mainactivity.setupmapifneeded(mainactivity.java:104) 03-24 20:43:36.124: e/androidruntime(27152):    @ com.yai.testmap.mainactivity.oncreate(mainactivity.java:98) 

any idea?

the casting problem can solved by

mgooglemap = ((supportmapfragment) getsupportfragmentmanager().findfragmentbyid(r.id.map)).getmap(); 

if want map inside fragment need use mapview or need extend supportmapfragment.

you can refer below

android - android.view.inflateexception: binary xml file line #8: error inflating class fragment


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -