{"id":6474,"date":"2014-04-18T06:52:28","date_gmt":"2014-04-18T06:52:28","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2014\/04\/18\/google-map-v2-crash-when-used-in-viewpager-fragment-collection-of-common-programming-errors-2\/"},"modified":"2014-04-18T06:52:28","modified_gmt":"2014-04-18T06:52:28","slug":"google-map-v2-crash-when-used-in-viewpager-fragment-collection-of-common-programming-errors-2","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2014\/04\/18\/google-map-v2-crash-when-used-in-viewpager-fragment-collection-of-common-programming-errors-2\/","title":{"rendered":"Google Map V2 crash when used in ViewPager fragment?-Collection of common programming errors"},"content":{"rendered":"<p>I have a problem where I&#8217;m trying to use Google Maps v2 in my Android app.<\/p>\n<p>My plan is to have a viewpager with two pages (a &#8220;detail&#8221; page and a &#8220;googlemap&#8221; page)<\/p>\n<p>I&#8217;ve set the whole thing up, and it&#8217;s giving me some weird results:<\/p>\n<p>When I start swiping to the &#8220;googlemap&#8221; page, in the middle of the animation (like if I hold the viewpager halfway), I can see the map load up properly.It&#8217;s just there.<\/p>\n<p>All the things I&#8217;ve set up (markers, camera, animation&#8230;) run as they are supposed to.<\/p>\n<p>But as soon <strong>I complete the swipe, and the googlemap page takes over the entire screen, the whole thing crashes.<\/strong><\/p>\n<p>Any idea what could cause it?<\/p>\n<p>Here is all the relevant code:<\/p>\n<p><strong>FragmentMap.xml<\/strong><\/p>\n<pre><code>\n\n\n    \n\n\n<\/code><\/pre>\n<p><strong>MapFragment.java<\/strong><\/p>\n<pre><code>import android.os.Bundle;\nimport android.support.v4.app.Fragment;\nimport android.view.LayoutInflater;\nimport android.view.View;\nimport android.view.ViewGroup;\n\nimport com.google.android.gms.maps.GoogleMap;\nimport com.google.android.gms.maps.SupportMapFragment;\n\npublic class MapFragment extends Fragment {\n\n    private GoogleMap map;\n    private static View view;\n\n    @Override\n    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {\n        if (view != null) \n        {\n            ViewGroup parent = (ViewGroup) view.getParent();\n            if (parent != null)\n                parent.removeView(view);\n        }\n        view = inflater.inflate(R.layout.fragment_map, container, false);\n        map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();\n\n        getActivity().getSupportFragmentManager().popBackStack();\n        return view;\n\n    }\n\n    public static MapFragment newInstance() {\n        MapFragment f = new MapFragment();\n        return f;\n    }\n}\n<\/code><\/pre>\n<p><strong>DetailActivity.java<\/strong><\/p>\n<pre><code>import android.content.Intent;\nimport android.os.Bundle;\nimport android.support.v4.app.Fragment;\nimport android.support.v4.app.FragmentActivity;\nimport android.support.v4.app.FragmentManager;\nimport android.support.v4.app.FragmentPagerAdapter;\nimport android.support.v4.view.ViewPager;\n\npublic class DetailActivity extends FragmentActivity {\n\n    int extraID;\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_detail_holder);\n\n        Intent prevIntent = getIntent();\n        extraID = prevIntent.getIntExtra(\"selected_ID\", 0);\n\n        ViewPager pager = (ViewPager) findViewById(R.id.viewpager);\n        pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));\n    }\n\n    private class MyPagerAdapter extends FragmentPagerAdapter {\n\n        public MyPagerAdapter(FragmentManager fm) {\n            super(fm);\n        }\n        @Override\n        public Fragment getItem(int pos) {\n            switch (pos) {\n            case 0:\n                return DetailFragment.newInstance(extraID);\n            case 1:\n                return MapFragment.newInstance();\n            default:\n                return null;\n            }\n        }\n\n        @Override\n        public int getCount() {\n            return 2;\n        }\n    }\n}\n<\/code><\/pre>\n<p><strong>detailHolder.xml<\/strong><\/p>\n<pre><code>\n\n<\/code><\/pre>\n<p>EDIT: <strong>logcat<\/strong><\/p>\n<pre><code>09-28 13:41:42.830: E\/AndroidRuntime(12693): FATAL EXCEPTION: main\n09-28 13:41:42.830: E\/AndroidRuntime(12693): java.lang.NullPointerException\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:394)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.support.v4.app.BackStackRecord.add(BackStackRecord.java:389)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:99)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:832)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.support.v4.view.ViewPager.populate(ViewPager.java:1048)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.support.v4.view.ViewPager.populate(ViewPager.java:914)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.support.v4.view.ViewPager$3.run(ViewPager.java:244)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.view.Choreographer.doCallbacks(Choreographer.java:562)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.view.Choreographer.doFrame(Choreographer.java:531)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.os.Handler.handleCallback(Handler.java:725)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.os.Handler.dispatchMessage(Handler.java:92)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.os.Looper.loop(Looper.java:137)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at android.app.ActivityThread.main(ActivityThread.java:5230)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at java.lang.reflect.Method.invokeNative(Native Method)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at java.lang.reflect.Method.invoke(Method.java:525)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)\n09-28 13:41:42.830: E\/AndroidRuntime(12693):    at dalvik.system.NativeStart.main(Native Method)\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I have a problem where I&#8217;m trying to use Google Maps v2 in my Android app. My plan is to have a viewpager with two pages (a &#8220;detail&#8221; page and a &#8220;googlemap&#8221; page) I&#8217;ve set the whole thing up, and it&#8217;s giving me some weird results: When I start swiping to the &#8220;googlemap&#8221; page, in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6474","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/6474","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=6474"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/6474\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=6474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=6474"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=6474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}